java 画图 我在JFrame中加载了一个图片 我想在这个图片上作画 要怎么做 才能使得这两张图互不干扰 作画的部分调用 clearRect()的时候 不会使JFrame上加载的图片也被清除 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以前写的供参考import javax.swing.*;import java.awt.*;import java.awt.image.*;public class MyFrame extends JFrame { private static final Image image = Toolkit.getDefaultToolkit().getImage("C:\\车牌.jpg"); JPanel p, p1; Graphics gp1; public MyFrame() { this.setSize(800, 600); p = new MyPanel(image); p1 = new MyPanel(); p1.setBounds(0, 0, 800, 600); p.setBounds(0, 0, 800, 600); p1.setOpaque(false); p1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseMoved(java.awt.event.MouseEvent evt) { p1MouseMoved(evt); } }); add(p); add(p1); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } private void p1MouseMoved(java.awt.event.MouseEvent evt) { gp1 = p1.getGraphics(); p1.paintImmediately(0, 0, 800, 600); gp1.setColor(new Color(1f, 0f, 0f, 1f)); gp1.drawRect(evt.getX(), evt.getY(), 100, 100); } public static void main(String[] args) { MyFrame frame = new MyFrame(); }}class MyPanel extends JPanel { private Image image = null; public MyPanel(Image image) { super(); this.image = image; } public MyPanel() { super(); } protected void paintComponent(Graphics g) { g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this); }} private void p1MouseClicked(java.awt.event.MouseEvent evt) { gp1 = p1.getGraphics(); //p1.paintImmediately(0, 0, 800, 600); gp1.setColor(Color.BLACK); gp1.fillOval(evt.getX()-15, evt.getY()-15, 30, 30); gp1.clearRect(0, 0, 30, 30); }你好 对你的程序我修改了一下 加了 gp1.clearRect(0, 0, 30, 30); 这行代码 我单击的时候是出现了一个黑圆 可是 同时 gp1.clearRect(0, 0, 30, 30); 这段代码 使得那个位置上变为空白 我是希望调用gp1.clearRect(0, 0, 30, 30); 时 改变的是p1 中的画面 而不是 连同p的背景也被改变 希望你们能帮我解答一下 谢谢了 关于HTTP、TCP的困惑!! jasperreport打印票据的问题 求解~~ 有关永久的问题 循环内存取数组元素为什么不好?(书上原话请看帖子内容) 一个java连接数据库的问题 运行出错,请教高手 关于数据库乱码问题 各位是不是都用jbuild开发? 用Applet可否读取其它网站上的网页数据(html源码)? 在这里第一次提问!! 非要<T>引用参数化的问题? 大家速度来围观呀!~!
import java.awt.*;
import java.awt.image.*;public class MyFrame extends JFrame { private static final Image image = Toolkit.getDefaultToolkit().getImage("C:\\车牌.jpg");
JPanel p, p1;
Graphics gp1; public MyFrame() {
this.setSize(800, 600);
p = new MyPanel(image);
p1 = new MyPanel();
p1.setBounds(0, 0, 800, 600);
p.setBounds(0, 0, 800, 600);
p1.setOpaque(false);
p1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseMoved(java.awt.event.MouseEvent evt) {
p1MouseMoved(evt);
}
});
add(p);
add(p1);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} private void p1MouseMoved(java.awt.event.MouseEvent evt) {
gp1 = p1.getGraphics();
p1.paintImmediately(0, 0, 800, 600);
gp1.setColor(new Color(1f, 0f, 0f, 1f));
gp1.drawRect(evt.getX(), evt.getY(), 100, 100);
} public static void main(String[] args) {
MyFrame frame = new MyFrame();
}
}class MyPanel extends JPanel { private Image image = null; public MyPanel(Image image) {
super();
this.image = image;
} public MyPanel() {
super();
} protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
}
}
gp1 = p1.getGraphics();
//p1.paintImmediately(0, 0, 800, 600);
gp1.setColor(Color.BLACK);
gp1.fillOval(evt.getX()-15, evt.getY()-15, 30, 30);
gp1.clearRect(0, 0, 30, 30);
}
你好 对你的程序我修改了一下 加了 gp1.clearRect(0, 0, 30, 30); 这行代码
我单击的时候是出现了一个黑圆 可是 同时 gp1.clearRect(0, 0, 30, 30); 这段代码
使得那个位置上变为空白 我是希望调用gp1.clearRect(0, 0, 30, 30); 时 改变的是p1 中的画面
而不是 连同p的背景也被改变 希望你们能帮我解答一下 谢谢了