许多人在制作窗体背景时,就只是获取窗体的画布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 AWT(Abstract Window Toolkit)和Swing库中的两个重要类,它们分别用于处理图像的不同方面。本篇文章将详细探讨如何将`Image`对象转换为`BufferedImage`,以及这样做的原因和好处。...
`BufferedImage`是Java AWT(Abstract Window Toolkit)库的一部分,用于在Java应用程序中表示和操作图像。这两个类在处理图像时各有优势,因此在不同的场景下,可能需要将一个转换为另一个。 **1. `Mat`到`...
public static BufferedImage iplToBufImgData(IplImage ipl,BufferedImage image ) public static IplImage BufImgToIplData(IplImage ipl,BufferedImage bi)
AWT中的`java.awt.image.BufferedImage`类是用于处理图像的核心类,而Swing虽然构建在AWT之上,但提供了更丰富的组件和高级特性。 2. **BufferedImage 类** `BufferedImage`类代表内存中的图像,它允许我们对图像...
在Java 2D API中,我们可以使用`BufferedImage`类来读取和操作图像。`BufferedImage`对象有一个`getRGB(x, y)`方法,用于获取图像中某个位置的像素值,以及一个`setRGB(x, y, pixel)`方法,用于设置该位置的像素值。...
Java中使用BufferedImage判断图像通道顺序并转RGB/BGR 在Java中,使用BufferedImage处理图像时,需要判断图像的通道顺序,判断图像是否为RGB或BGR格式,并对其进行相应的转换。本文将详细介绍如何使用BufferedImage...
Java 中 ImageReader 和 BufferedImage 获取图片尺寸实例 Java 中获取图片尺寸有多种方法,其中使用 ImageReader 和 BufferedImage 是两种常见的方法。本文将对这两种方法进行详细介绍,并提供相应的代码实现。 ...
在Java开发过程中,经常会遇到内存泄漏的问题,尤其是在长时间运行的应用程序中更为常见。本文将详细介绍如何解决Java内存泄漏问题,帮助开发者更好地理解和应对这一挑战。 #### 二、Java内存模型与内存区域 Java...
2. **位图和像素操作**:点阵字库实质上是一种位图,Java中的BufferedImage类可以用来创建和操作位图。通过getRGB()和setRGB()方法,我们可以读取和设置图像中的每一个像素点,从而构建点阵字形。 3. **自定义字体...
在Java中,`BufferedImage`类用于存储和处理图像,而`ImageIO`类则用于读取和写入图像文件。`File`类用于处理文件路径。 接下来,我们创建一个方法来读取图片并将其转换为`BufferedImage`对象: ```java public ...
在Java编程语言中,图像处理是一项重要的功能,可以用于创建、编辑或操作图像。本教程将探讨两个关键的图像处理技术:模糊处理和锐化处理。这些技术在图像分析、图像增强以及艺术创作中有着广泛的应用。 模糊处理是...
在Java编程语言中,`BufferedImage`类是用于创建和操作图像的重要工具。这个类提供了丰富的功能,包括读取、写入、绘制和修改图像。在这个特定的场景中,我们利用`BufferedImage`来实现一个有趣的功能:将四张图片...
在这个项目中,我们主要探讨如何利用Java实现图片的防篡改功能,通过生成图片的唯一标识(哈希值)并进行比对来检测图片是否被篡改。 1. **哈希算法**: 哈希(Hash)函数是一种将任意长度的数据映射为固定长度...
`BufferedImage`是Java中的一个类,用于存储和操作图像。你可以通过`ImageIO.read()`方法读取一个图像文件到`BufferedImage`对象中。 3. **Graphics2D 对象**: `Graphics2D`是从`Graphics`派生的类,支持更多的...
在Java编程语言中,生成文字图片并消除线段锯齿状边缘是一项常见的需求,尤其是在创建图形用户界面(GUI)或进行图像处理时。这个过程通常涉及到二维图形渲染和字体渲染技术。下面我们将深入探讨如何在Java中实现这...
从给定的文件信息来看,我们正在探讨如何使用Java中的`BufferedImage`类来保存图像为BMP(Bitmap)格式的文件。BMP是一种位图文件格式,它以未压缩的形式存储图像数据,使得每像素的颜色信息都能完整无损地保留下来...
在Java中,将BufferedImage对象转换为JPEG图像时,常遇到的问题及解决方法如下所述: 首先,早期的Java实现中,一个简便的方法是通过sun的JPEGImageEncoder类来实现BufferedImage到JPEG的转换。该类非标准Java API...
在Java编程语言中,图片处理是一项常见的任务,涵盖了读取、显示、编辑和保存图像等操作。本篇文章将深入探讨Java中的图片处理技术,并通过一个名为`ImageUtil.java`的工具类来展示如何实现这些功能。 首先,Java...
Java批量压缩图片格式的PDF档(源码Demo) 适用:仅针对纯图片型的pdf(类似扫描版)进行压缩 原理:压缩图片然后再另存成新文件 实例如下: ├── META-INF │ └── MANIFEST.MF ├── pom.xml └── src ├...
在本项目中,我们主要关注的是如何在Java环境中利用RapidOCR进行文本识别,这是一个基于PaddleOCR的高效OCR(Optical Character Recognition)工具。PaddleOCR是百度开发的开源OCR框架,它提供了多种OCR模型,包括...