java 如何利用双缓冲,将绘制PNG的某个部分绘制到缓冲区中?

来源:百度知道 编辑:UC知道 时间:2024/06/21 05:25:51
一张PNG图片往往包含许多的“瓷砖”(在手机游戏中被称作tile),而这些瓷砖用来铺成各种“地图”。
为了让这些瓷砖从整张PNG图片中分割出来,并且安排上序号,为下一步铺制地图提供可见视图。我想,应该首先创建一个缓冲区,来将这些分割好的瓷砖存放起来。那么缓冲区比较好创建:
Image img = createImage(16,16);//创建象素为16×16的图像缓冲
Graphics gg = img1.getGraphics();//得到这个缓冲的绘制器
关键是,如何将PNG的某个部分绘制到缓冲区中?
比如试图将PNG图片中的,X=32,Y=0,(图片中的左上角位置);x = 48,y=16(图片的右下角位置)这样一个区域绘制到缓冲区中,怎么办呢?
如果gg.drawImage(??????);
可以看到API中的drawimge方法,不支持这种绘制。
请问各路高士有何高见?
这个程序是在SWING中来实现的,所以不是针对J2ME,而是J2SE

public Image getImageRegion(Image src,int x,int y,int width,int height){
Image result = Image.createImage(width,height);
if(x + width>src.getWidth() || y + heigth>src.getHeigth){
//异常应警告后者抛出异常!
}
result.getGraphics().drawImage( src,-x, -y, Graphics.TOP|Graphics.LEFT);
return result;
}

给分给分!呵呵!!^_^

哦?Swing中不是更简单吗!?
方法一:
Graphics2D g2d=(Graphics2D)g;
g2d.drawImage(src,srcX,srcY,srcW,srcH,dstX,dstY,dstW,dstH,null);
方法二:
将g2d缩放一定比例,再绘制,即可将多余的部分滤去
方法三:
将g2d移动到指定的区域,再绘制
方法四:使用各种合成规则。
方法五:。。。。
就第一中不是很好吗?你怎么查API都查不到?
注意,Swing中所有的Graphics对象实质都是Graphics2D对象,可以直接类型转换后使用。Swing(确切讲应该是java2D)中之所以保留Graphics,仅仅是出于向前兼容考虑的。^_^

不会