图片显示问题(关于setClip方法)
hyamw 2005-11-16 11:16:25 我想只显示一幅图片的某一部分,所以用setClip+drawImage方法来做的。下面是我的代码:
int clipX = g.getClipX( );
int clipY = g.getClipY( );
int clipWidth = g.getClipWidth( );
int clipHeight = g.getClipHeight( );
g.setClip( 20 , 0, 6, 110 ); //这句有问题:(*)
for (int i = 0; i < 10; i++)
{
g.drawImage( m_dashboardScoreFnt, 20 - i * 6, i * 11, 0 );
}
g.setClip( clipX , clipY, clipWidth, clipHeight );
出现的问题是:
实际上显示出来的图片效果并不是预期的。上面的代码是在(20,0)开始的坐标上,显示一幅图片的6*11大小的部分,显示的部分每次向右移动6个像素。预期的应该是这样的:
|1|234567890
1|2|34567890
12|3|4567890
123|4|567890
1234|5|67890
12345|6|7890
123456|7|890
1234567|8|90
^
|
这两条线中间的应该是实际上显示出来的效果。
但是实际上跑出来的效果却让我大失所望:
1
1(竟然是1,而不是2)
2(2的位置不是在中间,靠左)
23(显出来的是2和3的各一半)
……
我使用的图片大小是98 * 11的,每个字符的宽度是6,高度11。
如果把有问题的那句注释掉,跑出来的效果就是:
1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
加上setClip就不是我想要的效果了 :(
编译运行环境:Windows XP SP2 + Eclipse 3.1 + WTK2.2 + Midlet 2.0,模拟器使用的WTK2.2的自带的模拟器DefaultColorPhone。(也用SonyEricsson_S700_Enum模拟器跑过,效果一样)
不知道有没有哪位达人给解释一下,这是为什么?WTK的bug?