“千里冰封” 兄弟的截屏程序酷毙了,但是好像9月4日之后就没有继续更新了,我们来继续为他的程序改进,顺便也把我们这几天都在讲的2D绘制用进来,我们的目标是让冰封的截屏程序成为截屏程序里的王!
今天先改进一下截图时候的选框,还是先放上截图的截图(*o*):

这是原来的图片,下面是改进后的

和改进的代码部分:
这部分代码插入  Temp类的paintComponent方法中的    if (showTip) 这句的前面
    Graphics2D g2d = (Graphics2D) g.create();
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            g2d.setComposite(AlphaComposite.getInstance(
                    AlphaComposite.SRC_OVER, 0.3F));
            g2d.setColor(Color.RED.brighter().brighter());
            int sX = Math.min(startX, endX);
            int sY = Math.min(endY, startY);
            g2d.fillRect(sX, sY, Math.abs(endX - startX), Math.abs(endY
                    - startY));
            g2d.setComposite(AlphaComposite.getInstance(
                    AlphaComposite.SRC_OVER, 1F));
            boolean drawCTip = endX - startX != 0 && endY - startY != 0;
            if (drawCTip) {
                String cTip = String.format("%dX%d", Math.abs(endX - startX),
                        Math.abs(endY - startY));
                int cTipH = 20;
                Font cTipFont = new Font("system", Font.BOLD, 16);
                g2d.setFont(cTipFont);
                int cTipW = SwingUtilities.computeStringWidth(
                        getFontMetrics(cTipFont), cTip);
                g2d.setPaint(Color.BLACK);
                int cStartY = sY - cTipH > 0 ? sY - cTipH : sY;
                g2d.fillRect(sX, cStartY, cTipW, cTipH);
                g2d.setPaint(Color.WHITE);
                g2d.drawString(cTip, sX, cStartY == sY ? sY + cTipH - 3
                        : sY - 3);
            }
            g2d.dispose();
怎么样,比起QQ的截图程序,我们又近一步了,嗯。
	
posted on 2007-09-13 13:28 
ruislan 阅读(1507) 
评论(10)  编辑  收藏