当前位置:   article > 正文

当我们把一个Image画到它本身上面..._先画一个image

先画一个image

当我们把一个Image画到它本身上面,会出现什么情况呢?如下例子:
Image img = Image.createImage(100,50);
Graphics g = img.getGraphics();
g.setColor(0xff0000);
g.fillrect(0,0,10,10);
g.drawImage(img,dx=10,dy=10,0);

也许,结果和你预想的有所不同。

原因很简单,由于源图和目标图是同一张图,在内存中也是同一块
数据区域,drawImage()时,是按照从上到下,从左到右复制的,
(x,y)先被复制到(x+10,y+10), (x+20,y+20)的数据就不对了.也
不能算是bug吧.

如果dy<0,或者dy==0 and dx<=0,或者dy>0且(dy>=h/2或dx>=w/2),不
会出现这种情况.

下面我们来想想怎么利用.
1. 要做含过渡色的背景时,为了省空间,经常只保存一个1*N的小
图,然后画若干次到一个buffer上。现在我们可以先画一次到buffer,
然后把buffer画到buffer本身上,x=1,y=0,就可以得到背景图。
这样子看起来,似乎并没有多大好处,还是需要一张buffer。如
果是用GameCanvas,就可以不用buffer。
Graphics bg = getGraphics();
bg.drawImage(background, 0, 0, 20);
bg.translate(0,1);
super.paint(bg);
bg.translate(0,-1);

2. 还没想到...
你有什么其他的好主意?请告诉我 :)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/223124
推荐阅读
相关标签
  

闽ICP备14008679号