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數組,因此您可以使用圖像的低質量等效圖像,它將爲您提供所有座標。然後,您可以找到高質量圖像的新像素。我希望這個答案能給你一點啓動。 –