我刚刚开始 Android 开发,而且我来自 JavaScript/HTML 领域,所以我目前正在研究 Android SDK 的可能性。

HTML 5 画布支持复合操作(请参阅 这里).

这在 Android Canvas 中可能吗?我扫描了 Canvas 类的 API,但找不到任何有用的东西。我至少需要复合操作“source-in”或(如果这不可能)“source-atop”。

有帮助吗?

解决方案

组合物是通过在与使用Canvas一个Paint一个PorterDuffXfermode绘图处理。

Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);

请参阅更多信息href="https://stackoverflow.com/questions/2763572/override-ondraw-to-change-how-the-drawing-occurs-android">。我还设法倍率onPaint使我们可以应用此组合物于绘制themeselves元件。

其他提示

我以前没有考虑过进行此类操作,但我认为有一种方法可以使用 矩形 形状。您可以定义矩形来标记应将哪些区域绘制到画布中,或者从源图像中取出哪些区域,以及 Rect 类内置了一些比较功能。例如,要模仿源输入,您可以使用 setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination) 使您的新矩形仅具有两个图像的相交区域。然后,您可以使用该矩形作为 Canvas 绘制命令之一的参数,告诉它仅从源图像中获取该矩形内的像素。然后,您可以通过执行绘制命令的顺序来控制 Z 轴上的绘制。

找到它自己。所述PorterDuffXfermode实现所有这些的复合模式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top