ITransform接口测试小结

 

ITRANSFORM_TransformBltSimple(...)与IBitmap_BltIn(.....)很相似。

参数上,两者都需要一个源位图指针;一个目标位图指针(ITransform*就是由IBitmap*转换而来的);在原图上的位置、大小、在目标图上的位置六个整型参数;一个光栅操作(对于IBitmap就是透明画、异或画这些色彩操作,对于ITransform就是旋转画,放大画这些形状操作)。

两者的画图过程都可以等效为以下几个步骤。取目标图位置,把源图放在这个位置上,进行光栅操作,得到最后的目标图。

 

要注意的地方:

 

1.源图与目标图一般不是同一幅图。对于IBitmap,这个很明显;对于ITransform,目标图是由IBitmap_QueryInterface得到的,可能会误将源图转换为目标图。

2.“在目标图上的位置”这个参数的含义。对于IBitmap,没有形状类的光栅操作。光栅操作前后,图像在目标图上的坐标是没有变化的。对于ITransform,在目标图上的位置,含义应该理解为源图左上角放在目标图的这个位置,中心固定,然后进行形状光栅操作,就可以得到最后想要的目标图。

3.ITransform接口支持的图像类型有限。测试发现,对于用IBITMAP_CreateCompatibleBitmap()创建的与屏幕兼容的位图,可以用IBtimap_QueryInterface取得ITransform指针;直接用IShell_LoadBitmap读入的windows位图,有些色深可能会转换失败。

4.BREW 2.0 模拟器对ITransform接口的实现可能有问题。同样的程序,用3.1.5的模拟器总能得到想要的结果;用2.0模拟器有些操作(例如ITransform_TransformBltSimple接口参数给旋转90度),会得到奇怪的结果。

 

测试代码如下:

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值