我的应用可让用户编辑图像。图像在"切片中编辑":用户选择要编辑的大图像的一部分(1),用户编辑它(2,3),然后当用户完成时,编辑的切片是复制回原始图像(4)。您可以在下图中看到简化的过程。
要编辑切片,我会创建裁剪区域的位图,这是用户编辑的位图(2,3)。
当用户完成时,我只将drawBitmap()
切片放入原始图像(4)。这个过程比较复杂,因为原始图像有一个转换矩阵,我必须反转等,但为了简单起见,这就足够了。
当用户清除切片(3)中的某些像素时,会出现问题。我无法找到正确的PorterDuff / Paint
模式,因此编辑后的切片会替换原始图像上的部分,即使是透明像素也是如此。 我想要的是在(4)
到目前为止我最好的选择是使用PorterDuff.SRC
,但正如您在下图中看到的那样,透明像素在原始图像中变为黑色。如果我将paint的颜色设置为Transparent,则整个结果为黑色。
mBlitPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
mImageCanvas.drawBitmap(mArenaBitmap, invertedMatrix, mBlitPaint);
我也试过SRC_OVER
甚至mImageCanvas.drawARGB (0xff,0,0,0),
,但没有运气。在第一种情况下,透明像素被忽略。在第二个中,透明像素被涂成黑色。
答案 0 :(得分:0)
我也遇到过这个问题而无法找到解决方案,幸运的是我的目的只是为了显示一些不能实际编辑它的东西并保存它...我使用了不同的层,这似乎有效。但如果你找到了解决方案,我想知道你是怎么做的