基于Swing實現的截屏工具
基于Swing實現的截屏工具
主要思路:
首先繪制截取到的屏幕,然后繪制mask層,根據用戶鼠標選擇,將選擇區域的mask層像素設置
為完全透明,即不透明度為0,當不透明度為255時表示完全不透明。關于如何操作
BufferedImage像素參見這里:http://blog.csdn.net/jia20003/article/details/7279667
圖示如下:
技術點詳解:
1. 使用Javarobot類實現對屏幕的截取
2. 使用MouseListener與MouseMotionListener實現對用戶鼠標操作的位置跟蹤
3. 使用UI與控制分離的原則完成編碼
4. 使用Java2D功能完成對選擇區域的標識與像素提取
5. 使用以前的FullScreen功能實現全屏功能-http://blog.csdn.net/jia20003/article/details/6876995
6. 使用Swing的ToolKit類實現剪切板操作
7. 使用字體文件完成特殊字體顯示功能
8. 通過對像素數據的透明度設置實現mask功能
關鍵代碼解釋:
實現Robot截屏的代碼如下:
// Make a rectangle accordingto the size of the screen
Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize() );
//Take the screen snapshot
Robotrobot = new Robot();
return robot.createScreenCapture(rectangle);
實現Swing剪切板功能的代碼如下:
CustomTransferabletransferable = new CustomTransferable(bi,1.0f);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(transferable,null);
實現圖像保存的代碼如下:
File outputfile =fileChooser.getSelectedFile();
System.out.println(outputfile.getAbsolutePath());
ImageIO.write(bi, "png", outputfile);
實現選擇區域矩形獲取與更新UI的代碼如下:
endX = (int)event.getPoint().getX();
endY = (int)event.getPoint().getY();
if(startX > 0&& startY > 0 && (endX > startX) && (endY > startY)) {
int width = endX - startX;
int height = endY - startY;
mainView.updateView(new Rectangle(startX, startY, width,height));
}
創建Mask的代碼如下:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int height = (int)screenSize.getHeight();
int width = (int)screenSize.getWidth();
maskImage = newBufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
int[] pixels = newint[height *width];
int index = 0;
int ta = 0, tr = 0,tg = 0, tb = 0;
for(int row = 0; row< height; row++) {
for(int col = 0; col< width; col++) {
index = row * width + col;
ta = 255/2;
tr = Color.GRAY.getRed();
tg = Color.GRAY.getGreen();
tb = Color.GRAY.getBlue();
pixels[index] = (ta << 24) | (tr<< 16) | (tg << 8) | tb;
}
}
setRGB(maskImage, 0, 0, width,height, pixels);
有如下功能:
- 支持mask功能
- 直接截屏選取,類似QQ截屏選取功能
- 支持copy到系統剪切板
- 支持保存截屏為png或者jpg格式文件
- 支持鼠標文字添加-類似Windows Paint添加文字方式(新功能2012-06-19)
使用說明:
- 直接雙擊jar文件可以直接運行
- 如果你的winrar或者其它壓縮工具關聯了.jar文件,請右鍵選擇Java圖標運行
- 當點[Capture Screen]之后,變成全屏模式,只有按
- 當按
程序啟動界面:

完成截屏按

點擊[SaveImage]按鈕時候效果:

特別提示:運行該工具需要預先安裝JRE6或JRE6以上版本運行環境
來自:http://blog.csdn.net/jia20003/article/details/7656728