将部分Android位图绘制到自身并重叠一些是否安全?

我在我的摩托罗拉Droid上测试了它,它按预期工作.但是,我担心这可能是:

>非常低效.
>不保证可以在所有Android手机上使用.

码:

/* Create a simple 100 by 100 bitmap */
Bitmap myBitmap = Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);

/* Create a canvas with which to draw on my bitmap */
Canvas myCanvas = new Canvas(myBitmap);

/* Draw a subset of my bitmap onto itself,with the source rectangle and destination rectangle overlapping */
Rect sourceRect = new Rect(10,99,99);
Rect destRect = new Rect(0,89,99);
myCanvas.drawBitmap(myBitmap,sourceRect,destRect,null);

正如我所说,这似乎在我的测试中运行良好,但是当在其他平台上执行bit blits时,我并不总能保证将一个grpahics区域复制到另一个grpahics区域是安全的,内存和性能方面的.源和目的地相交.

我欢迎任何有关此事的见解.

解决方法

它应该是非常安全的.
至于交叉 – 什么可能是错的?
如果要复制到已复制的区域,则取决于包括代码在内的实现.最糟糕的(实际上最好的)场景是当它逐字节复制时,您将拥有区域的“斑马”复制,其中strip是源区域和目标区域之间的差异.
但是,由于大多数IO操作甚至在内存中都是缓冲的,因此斑马线可能会干扰缓冲区/条带差异.由于缓冲区,条带大小和内存中区域的实际位置,这可能有点滑稽.

换句话说,它可能看起来像万花筒中的图像,但它是非常安全的.

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...