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

将Android位图的一部分绘制到自身上并进行一些重叠是否安全?,android,Android,我在我的摩托罗拉Droid上测试了这个,它按预期工作。然而,我担心这可能是: 效率极低 不保证能在所有Android手机上工作 代码: 正如我所说,这在我的测试中似乎很好,但当在其他平台上执行bit BLIT时,我并不总是能够保证在源和目标相交时将一个grpahics区域复制到另一个grpahics区域是安全、内存和性能方面的 我欢迎对此有任何见解。它应该非常安全。 至于十字路口,有什么问题吗? 如果您要复制到从中复制的区域,则这取决于包括代码在内的实现。最坏(实际上是最好)的情况是逐字节复制,

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

  • 效率极低
  • 不保证能在所有Android手机上工作
  • 代码:

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


    我欢迎对此有任何见解。

    它应该非常安全。 至于十字路口,有什么问题吗? 如果您要复制到从中复制的区域,则这取决于包括代码在内的实现。最坏(实际上是最好)的情况是逐字节复制,您将对您的区域进行完美的“斑马”复制,其中strip是源区域和目标区域之间的差异。 然而,由于即使内存中的大多数IO操作都是缓冲的,因此您的zebra可能会受到缓冲区/条带差异的干扰。这可能有点可笑,因为缓冲区、条带大小以及区域在内存中的实际位置

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

    /* 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, 0, 99, 99);
    Rect destRect = new Rect(0, 0, 89, 99);
    myCanvas.drawBitmap(myBitmap, sourceRect, destRect, null);