1
我在视图内有一个位图。 这里是我的绘制它的代码:查找位图图像中的多边形
@Override protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFCCCCCC);
int w = mBitmap.getWidth();
int h = mBitmap.getHeight();
float[] mVerts = {
0, 0,
w * 0.8f, 0,
0, h,
w, h * 0.7f
};
canvas.drawBitmapMesh(mBitmap, 1, 1, mVerts, 0, null, 0, null);
}
,它看起来像这样:
现在的问题是:
如果我有一些形状和透明的形象背景如何找到一个覆盖该区域的多边形,如下所示:
然后我应该如何将所有这些点添加到位图网格,以便我可以让用户移动它们并像第一个示例中那样操作图像?
但是,它会给我几千点吗?在上面的图片中,你只有几个。而且它可能更少,因为吨的点数会影响性能。 – Makalele
@Makalele是的,我同意。您可以增加循环增量,但它可能并不总是给你最好的结果。你需要的是一些图形算法,可以检测到所有尖锐的边界点。您可以使用该算法和上面已经解释的逻辑,即检查像素的颜色是否透明。感谢:) –
也为了性能,你可以使用一些位图优化。由于我们不需要高质量的图像来生成mVerts数组,因此您可以使用图像的低质量等效图像,它将为您提供所有坐标。然后,您可以找到高质量图像的新像素。我希望这个答案能给你一点启动。 –