私はビュー内にビットマップを持っています。 ここにそれを描くための私のコードです:ビットマップイメージ内のポリゴンを見つける
@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配列を生成するために高品質の画像は必要ないので、すべての座標を与える低品質の画像を使用することができます。次に、高品質の画像の新しいピクセルを見つけることができます。私はこの答えがあなたにポイントを与えることを願っています。 –