迅雷Bolt的ClipSubBindBitmap函数特别说明

因为在工作中基于迅雷Bolt开发的是IM产品,需要实现自定义用户头像的功能。

但Bolt中对图像的默认拉伸锯齿效果非常明显,所以自己实现了图像拉伸函数,代码已共享,具体可查看:《迅雷Bolt图像拉伸不清晰的解决办法》。

不过在这个函数的使用中,遇到了使用ClipSubBindBitmap裁切后再拉伸,图像不显示的Bug,示例代码:

hCutBitmap虽然不为空,但却不显示,后来跟龙哥(幻灰龙)沟通,注意到Bitmap类的ClipSubBindBitmap函数的说明:

ClipSubBindBitmap返回的Bitmap是子对象,与原Bitmap共享数据,也就是说裁切出来Bitmap并不是真正意义上的图像,所以导致后续的拉伸Bug。

解决的办法也非常简单,就是调用Clone函数,创建一个真正意义上的Bitmap。

大家在使用ClipSubBindBitmap后,如果需要对图像进行其他处理,可以先Clone一个。

另外在沟通中,关于对象引用计数的官方解释中有错误:http://xldoc.xl7.xunlei.com/0000000018/00000000180001000010.html

CheckXXX没有增加引用计数,只是把对象从Lua栈里取出来。


分享,是一种天生的冲动!

原文地址:https://www.cnblogs.com/ym123/p/4174739.html