这是一个非常常用的东西
主要是重写JPanel中的paint(Graphics g)方法实现的。
0 写一个类继承JPanel
public class WSModePlane extends JPanel
1 获取缓冲区
首先需要获得JPanel的缓冲区,这样才能在JPanel中画图:
bfimage = (BufferedImage) this.createImage(this.getWidth(),this.getHeight());
这样我们就获得了缓冲区了bfimage。这里的this就是要被画图的Jpanel
2 实现图像处理
而后我们用BufferImage提供的相应函数画图,或者是执行图像处理算法
设置像素点颜色:
bfimage.setRGB(pln, pcol, 0xff0000)获取像素点颜色:
public int getRGB(int x,int y)注:ARBG使用一个32位整数保存的,每个参数8位
等等,通过API手册可以查询到相应函数
当然我们也可用Grahics 画图
Graphics bfg = bfimage.getGraphics();
比如画直线
bfg.drawLine(x1,y1,x2,y2);注意这里实在缓冲区画的,并没有画到Jpanel上面
3 传入Jpanel
重写Jpanel 的 paint函数,将缓冲区中的东西画到Jpanel对应的Graphics上面就行啦
@Override
public void paint(Graphics g) {
g.drawImage(bfimage, 0, 0, null);
}
4 图像变化
如果需要变化图像,只要改动缓冲区 就是这里的 bfimage,然后调用Jpanel的repaint()函数,就行。非常方便!
wsmodePlane.repaint();
看完后评价是美德~
可以加QQ 993830638讨论 ,很高兴能帮助你!