图片显示问题(关于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?
...全文
562 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyamw 2005-11-25
  • 打赏
  • 举报
回复
没人知道?
拿到真机上就没有这个问题了,可能是模拟器的问题。 :(
hyamw 2005-11-17
  • 打赏
  • 举报
回复
TO prok(好地都让猪拱了)
哎,我手里的代码就是这样的,我最前面写的代码就是根据这个改过来的(简单的一个测试)。但是在J2ME 自带的模拟器上跑出来的效果就是差太多了。


----------------------


现在怀疑两个地方:
1、J2ME本身有问题(好像不太可能,要有问题早被骂臭了)
2、模拟器本身有问题。(但是我用SonyEricsson的模拟器跑这个程序也有同样的问题)
prok 2005-11-17
  • 打赏
  • 举报
回复
按你的需求给你写个吧.
//画笔,图像,需要画的x坐标,y坐标,在图片上的x坐标,y坐标,剪切区域的宽,高
public void drawClip(Graphics g,Image img,int x,int y,int ClipX,int ClipY,int ClipWidth,int ClipHeight){
g.setClip(x,y,ClipWidth,ClipHeight);
g.drawImage(img,x-ClipX,y-ClipY,0);
g.setClip(0,0,Width,Height);



}
xueyong1203 2005-11-16
  • 打赏
  • 举报
回复
你每次你每次调用你写的这个函数之前和之后最好setClip(0, 0, scnWidth, scnHeight)
其中scnWidth = getWidth();
scnHeight = getHeight();
hyamw 2005-11-16
  • 打赏
  • 举报
回复
晕,怎么前面那个效果没有对齐?在编辑的时候对齐了的 :(

|1|234567890
1|2|34567890
12|3|4567890
123|4|567890
1234|5|67890
12345|6|7890
123456|7|890
1234567|8|90
hyamw 2005-11-16
  • 打赏
  • 举报
回复
这个我都有调用的。只是没有写出来罢了。
奇怪的是,如果没有setClip,图像全显示出来就没问题,
要是setClip调用了,并且图像的显示左上角坐标在clip区域外面就有问题。

13,097

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧