在Java操纵程序中成立图象[Java编程]
本文“在Java操纵程序中成立图象[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
合成图象
您没必要从文件中读取全部的图象 — 您可以成立自己的图象.要成立自己的图象,最机动的办法是用一个BufferedImage对象,它是Image类的一个子类,它把图象数据存储在一个可以被拜候的缓冲区中.它还支持各种存储像素数据的办法:利用或不利用 alpha 通道、差别种类的颜色模子以及颜色组件的各种切确度.ColorModel类供应一种机动的办法定义各种颜色模子,以和 BufferedImage对象一同利用.为了理解颜色模子工作的基本知识,我们将只利用一个缺省的颜色模子,其颜色组件由 RGB值和一个缓冲范例(存储 8 位的RGB 颜色值加上一个alpha 通道)构成.这一缓冲范例由 BufferedImage类中的常量 TYPE_INT_ARGB 指定,它意味着每个像素要用一个int值.每个像素的值是以 8 位字节情势存储一个alpha 组件加上 RGB 颜色组件.我们可以用给定的宽度和高度成立一个这种范例的BufferedImage对象,代码语句以下:
int width = 200;
int height = 300;
BufferedImage image = new BufferedImage(width,
height,BufferedImage.TYPE_INT_ARGB);
这段代码成立了一个BufferedImage对象,它代表一个200像素宽、300像素高的图象.为了利用这个图象,我们需求有图形上下文,而 BufferedImage对象的createGraphics()办法就返回一个与该图象相关的Graphics2D对象:
int width = 200;
Graphics2D g2D = image.createGraphics();
利用 g2D对象的操作会改正 BufferedImage对象 image 的像素.操纵这个对象,您目前完好有本领利用 BufferedImage对象.您可以绘制形状、图象、GeneralPath对象或任何别的东西,还可认为图形上下文设置alpha 组合对象.您同时还拥有 Graphics2D对象供应的全部仿射变形本领.
假如要从 BufferedImage对象获得单个像素,可以通过调用它的getRGB()办法,并供应当像素的x,y 坐标作为int范例的参数.这个像素会按 TYPE_INT_ARGB 格局以 int范例返回,它由四个8 位的值(代表 alpha值和 RGB 颜色组件)构成一个32 位字.同时 getRGB() 还有一个重载的版本,它从一部份图象数据中返回一个像素数组.您也可以通过调用 setRGB()办法来设置单个像素.前两个参数是该像素的坐标值,第三个参数是待设定的值,范例为int.这个办法也有一个版本可以设置像素数组的值.
至此我们已经完成了像素操作的学习.下面我们要成立一个applet,它在Wrox 徽标后台上使 BufferedImage对象具有动画效果.我们的示例还将演示怎样能让图象部分透明.applet 的基本内容以下所示:
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.swing.*;
public class ImageDrawDemo extends JApplet
{
// The init() method to initialize everything...
// The start() method to start the animation...
// The stop() method to stop the animation...
// The ImagePanel class defining the panel displaying the animation...
// Data members for the applet...
}
成立一个图象
一个子图形是一个小的图形图象,可以将其绘制在静态图象以成立动画.要成立动画效果,您只要随着时间推移,在差别的位置和方向上绘制子图形.当然,操纵坐标系的变形可以使之简化很多.游戏常常利用子图形 — 由于您只需求在一个静态后台上绘制子图形,所以可以使动画所占用的处理器的时间大大削减.我们对利用 BufferedImage对象的爱好意味着我们将不再耗费精神去研究削减处理器时间的最佳技术,而是把注意力放在理解怎样才能在一个程序内部成立和利用图象上.
我们的BufferedImage对象看上去如图 1 中的图象:
图 1. BufferedImage 子图形
这个图象是一个以 spriteSize 为边长的正方形.图象别的部份的尺寸值都与这个边长相关.实际上这里只有两个多少实体,一条线和一个圆,都在差别位置和方向反复呈现.假如我们成立一个Line2D.Double对象代表线,成立一个Ellipse2D.Double对象代表圆,那么我们便可以通过移动用户坐标系和画这两个对象中的一个或别的的对象而画出整个图象.
以上是“在Java操纵程序中成立图象[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |