许多人在制作窗体背景时,就只是获取窗体的画布g,然后就开始调用画布的drawImage()方法画上背景,其实这在画静态背景时是可以用的,但在画动态背景时是不可取的,那么应该怎么做呢,这里先贴上代码再说明
//创建一个图片缓冲区,先将图片画到缓冲区上 BufferedImage imageBuffer = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB); ImageIcon icon = new ImageIcon("images/1.jpg"); //图片缓冲区的画布 Graphics gg = imageBuffer.getGraphics(); gg.drawImage(icon.getImage(),0,0,icon.getIconWidth(),icon.getIconHeight(),0,0,icon.getIconWidth(),icon.getIconHeight(),null); //将图片缓冲区中的图片画到窗体上,方能显示出来 g.drawImage(imageBuffer,0, 0, null);
先讲一下这段代码所用到的思想:
创建一个BufferedImage,BufferedImage是一个图片缓冲区,在这里你可以将它看作一个自由的画布,先往这个自由的画布上画上你想画的东西,然后再将这个自由的画布当作一幅画,整个画到窗体上。那么这种思想有什么好处呢?答案应该是显而易见的,当你经常改变要画的东西时,只在图片缓冲区中该变即可,将所有的该变完成后再显视到窗体上,这样窗体上的动画就不会因为一步一步刷新而闪烁了,这种用中间量的方法是编程中很重要的一种思想。
下面简介一下画布的drawImage方法的一个用法:
<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:18:02 CST 2007 -->
<noscript></noscript>public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
img
- 要绘制的指定图像。如果 img
为 null,则此方法不执行任何操作。dx1
- 目标矩形第一个角的 x 坐标。dy1
- 目标矩形第一个角的 y 坐标。dx2
- 目标矩形第二个角的 x 坐标。dy2
- 目标矩形第二个角的 y 坐标。sx1
- 源矩形第一个角的 x 坐标。sy1
- 源矩形第一个角的 y 坐标。sx2
- 源矩形第二个角的 x 坐标。sy2
- 源矩形第二个角的 y 坐标。observer
- 当缩放并转换了更多图像时要通知的对象。API上讲的这些也不一定能看的懂,其实这个方法就是将一个矩形{(dx1,dy1),(dx2,dy2)}缩小或放大到{(sx1,sy1),(sx2,sy2)}这么大。
相关推荐
这个类可以实现Image到BufferedImage的向下转换,方便各位开发各类需要图像处理的程序。
java结合OpenCV实现Mat与BufferedImage互相转换
public static BufferedImage iplToBufImgData(IplImage ipl,BufferedImage image ) public static IplImage BufImgToIplData(IplImage ipl,BufferedImage bi)
主要介绍了java中ImageReader和BufferedImage获取图片尺寸实例,具有一定借鉴价值,需要的朋友可以参考下
主要介绍了java中如何BufferedImage判断图像通道顺序并转RGB/BGR的相关资料,需要的朋友可以参考下
java 处理图像的明暗度 java 处理图像的明暗度 java 处理图像的明暗度
java实现的图片防篡改功能,采用图片hash生成唯一标识,再进行比对,判断图片是否被篡改过,可运行源码
java内存泄漏解决java内存泄漏解决java内存泄漏解决
内含java图片旋转的代码和注释
主要介绍了java 使用ImageIO.writer从BufferedImage生成jpeg图像遇到问题总结及解决的相关资料,需要的朋友可以参考下
java生产文字图片,消除线段的锯齿状边缘。文字更加光滑
19年10月3号更新 新资源地址https://download.csdn.net/download/b379685397/11831772。 使用教程见https://blog.csdn.net/b379685397/article/details/101940373 有问题可以私信我哦
Spire.Barcode for JAVA 是一款Java条形码组件,开发人员可以使用它在Java应用程序中简洁快速地生成和识别多种一维和二维条码。下载以后解压缩,然后从lib文件夹下导入Spire.Barcode.jar包到你的Java应用程序中即可...
使用java+OpenCV进行图片对比并标记差异部分 1,如果报错,就把 opencv_java470.dll 文件放进 C:\Windows\System32 下 2,需要jdk11
java 将图片进行180度旋转 java 将图片进行180度旋转 java 将图片进行180度旋转
在 Java 中,生成水印图片需要使用 Java 的图像处理类库,例如 Java 2D 和 Java Image I/O。 Java 2D 提供了一个强大的图像处理引擎,能够处理各种类型的图片,而 Java Image I/O 则提供了读取和写入图片的功能。 ...
做Java课程设计有用到的例子,是个看了就能上手的例子。
Java中字符串生成图片工具类 将字符串转换为BufferedImage对象 将字符串转换为BufferedImage对象字段--自动换行
在Windows OS环境下,使用OpenGL作为Java 3D优先图像引擎,ImageComponent2D格式应是ImageComponent2D.FORMAT_RGB,BufferedImage格式应是BufferedImage.TYPE_3BYTE_BGR.BufferedImage格式在JMFSnapper中确定. ...
使用 Java 的 BufferedImage 类和 ImageIO 类实现图像处理,详细介绍了 BufferedImage 类的使用方法,包括读取图像、写入图像、获取图像信息等操作。 在图像识别部分,讨论了图像识别算法的选择,包括像素比较的...