JAVA如何在显示器上画图 最近在做个模拟QQ截图的小工具玩,截取屏幕图片这部分通过查资料已经搞定,现在问题就在于,怎么样像QQ截图那样可以在显示器上画出个区域,供我截取所选区域的图片。希望各位不啬赐教,小北不想要现成的项目代码,给我些许点拔就好了。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 才给10分,太小器了,我是在panel上画的,如果你想要QQ那样,需要做个屏幕的快照映射,其他一样的package test;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.util.HashMap;import java.util.Map;import javax.swing.JFrame;import javax.swing.JPanel;public class TestMouse extends JFrame { private static final long serialVersionUID = -362233428598274611L; private Map<String, Point> pointMap = new HashMap<String, Point>();; public TestMouse() { init(); } private void init() { this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(getCenter(), BorderLayout.CENTER); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(new Dimension(300, 300)); this.setVisible(true); } private JPanel getCenter() { JPanel panel = new JPanel() { private static final long serialVersionUID = 0L; public void paintComponent(Graphics g) { super.paintComponent(g); if (pointMap != null && pointMap.size() > 0) { Graphics2D g2 = (Graphics2D) g; g2.drawLine((int) (((Point) (pointMap.get("start"))).getX()), (int) (((Point) (pointMap.get("start"))).getY()), (int) (((Point) (pointMap.get("start"))).getX()), (int) (((Point) (pointMap.get("end"))).getY())); g2.drawLine((int) (((Point) (pointMap.get("start"))).getX()), (int) (((Point) (pointMap.get("start"))).getY()), (int) (((Point) (pointMap.get("end"))).getX()), (int) (((Point) (pointMap.get("start"))).getY())); g2.drawLine((int) (((Point) (pointMap.get("end"))).getX()), (int) (((Point) (pointMap.get("start"))).getY()), (int) (((Point) (pointMap.get("end"))).getX()), (int) (((Point) (pointMap.get("end"))).getY())); g2.drawLine((int) (((Point) (pointMap.get("start"))).getX()), (int) (((Point) (pointMap.get("end"))).getY()), (int) (((Point) (pointMap.get("end"))).getX()), (int) (((Point) (pointMap.get("end"))).getY())); } } }; panel.setLayout(new FlowLayout(FlowLayout.CENTER)); panel.addMouseMotionListener(new MouseMotionListener() { public void mouseDragged(MouseEvent e) { pointMap.put("end", e.getPoint()); repaint(); } public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } }); panel.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) { pointMap.clear(); pointMap.put("start", e.getPoint()); } public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } }); return panel; } public static void main(String[] args) { new TestMouse(); }} 不好意思啊 楼上的 我先前乱花钱的 问个小问题也用100分 现在知道很难的了 呵呵 我先前想的是 用个透明的windows 容器,然后在windows上画来着。还没完成。 顶一下顺带一句:我喜欢Freedom 苍蝇腿也是肉。先用Robot截屏,然后重载JFrame绘制方法,用截屏的图片填充。再将JFrame全屏 哎 我的计划失败了, 透明度为0的WINDOW不能用鼠标了,根本无法获取鼠标的坐标。上面的各位啊,还是得有要个透明度为0的组件再来截屏吧,要不然组件也会被拍进去的吧。 JAVA 实例化对象的时候一种特殊的写法,请教下这么写的规范及好处 字符串解析提取问题 很奇怪的问题,涉及JAVA传值传址的问题 关于Log4j,文件名的问题 为什么不能打包 请教一下JAVA有关线程的知识 Resin的官方网站好像出了问题? 用java实现一个功能关于日期的 急问!!!!!!!!!!!!高手请进!!! 一个简单的JAVA程序问题,帮助解决马上给分 Jasper~~总报 Error i n i t i a l i z i n g graphic e n v i r o n m e n t字符集相关 java的二维数据可以对整列进行操作吗?
package test;import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.HashMap;
import java.util.Map;import javax.swing.JFrame;
import javax.swing.JPanel;public class TestMouse extends JFrame { private static final long serialVersionUID = -362233428598274611L; private Map<String, Point> pointMap = new HashMap<String, Point>();; public TestMouse() {
init();
} private void init() {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(getCenter(), BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(new Dimension(300, 300));
this.setVisible(true);
} private JPanel getCenter() {
JPanel panel = new JPanel() { private static final long serialVersionUID = 0L; public void paintComponent(Graphics g) {
super.paintComponent(g);
if (pointMap != null && pointMap.size() > 0) {
Graphics2D g2 = (Graphics2D) g;
g2.drawLine((int) (((Point) (pointMap.get("start"))).getX()), (int) (((Point) (pointMap.get("start"))).getY()), (int) (((Point) (pointMap.get("start"))).getX()),
(int) (((Point) (pointMap.get("end"))).getY())); g2.drawLine((int) (((Point) (pointMap.get("start"))).getX()), (int) (((Point) (pointMap.get("start"))).getY()), (int) (((Point) (pointMap.get("end"))).getX()),
(int) (((Point) (pointMap.get("start"))).getY())); g2.drawLine((int) (((Point) (pointMap.get("end"))).getX()), (int) (((Point) (pointMap.get("start"))).getY()), (int) (((Point) (pointMap.get("end"))).getX()),
(int) (((Point) (pointMap.get("end"))).getY())); g2.drawLine((int) (((Point) (pointMap.get("start"))).getX()), (int) (((Point) (pointMap.get("end"))).getY()), (int) (((Point) (pointMap.get("end"))).getX()),
(int) (((Point) (pointMap.get("end"))).getY()));
}
}
};
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
panel.addMouseMotionListener(new MouseMotionListener() { public void mouseDragged(MouseEvent e) {
pointMap.put("end", e.getPoint());
repaint();
} public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub } });
panel.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub } public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub } public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub } public void mousePressed(MouseEvent e) {
pointMap.clear();
pointMap.put("start", e.getPoint());
} public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub } });
return panel;
} public static void main(String[] args) {
new TestMouse(); }}
我先前想的是 用个透明的windows 容器,然后在windows上画来着。还没完成。
先用Robot截屏,然后重载JFrame绘制方法,用截屏的图片填充。再将JFrame全屏
上面的各位啊,还是得有要个透明度为0的组件再来截屏吧,要不然组件也会被拍进去的吧。