1

我正在编写一个涉及一些 2D 绘图操作的 Android 应用程序。我正在尝试使用 saveLayer 和 xfermode SRC_IN 来绘制 2 个图像的交集。如果我不旋转任何东西,它似乎工作正常,但如果我旋转其中一个图像,它似乎将旋转矩形之外的像素视为不透明(交叉点的一部分),或者更有可能,不绘图操作的一部分(不受放置在其顶部的透明像素的影响)。

下面是我正在谈论的图片。底部附近的“5”和“3”图像通过在“5”上使用 xfermode SRC_IN 绘制“3”图像(旋转)来“相交”。我已经在渐变背景上显示了所有三个图像,以帮助可视化透明度。

经过一番思考,我怀疑“3”的剪切矩形之外的区域没有被视为不透明,而只是不被视为绘图操作的一部分。有趣的是,如果我将该层标记为软件层而不是硬件层,则数字“5”会显示在背景中,而不仅仅是 3 的剪切矩形之外的部分。我不明白这一点。

受 SRC_IN 绘图操作影响的区域是如何确定的?(通常没关系,但 SRC_IN 的一个独特功能是它必须根据正在绘制的图像中透明的内容将不透明像素变为透明,因此绘制的整体大小很重要,即使它通常不会' t 是。)如何使 3 的绘制区域之外的像素被视为不属于交叉点的一部分?绘制 3 时是否需要放大活动的剪切矩形?

绘制 5 和 3 的交点

4

0 回答 0