7

私は Android 開発を始めたばかりで、JavaScript/HTML の世界から来たので、現在 Android SDK の可能性を調査しています。

HTML 5 キャンバスは複合操作をサポートしています (こちらを参照)

これは Android Canvas で可能ですか? Canvas クラスの API をスキャンしましたが、有用なものが見つかりませんでした。少なくとも「source-in」または(これが不可能な場合は)「source-atop」という複合操作が必要です。

4

3 に答える 3

9

Canvas構成は、Paintを使用するで描画することによって処理されPorterDuffXfermodeます。

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

詳細については、こちらをご覧ください。onPaintまた、この構成をテーマ自体を描画する要素に適用できるように、オーバーライドすることもできました。

于 2010-05-05T00:37:01.293 に答える
1

自分で見つけました。PorterDuffXfermodeは、これらすべての複合モードを実装します。

于 2010-04-01T13:44:52.823 に答える
1

このような操作はこれまで検討したことがありませんが、 Rectの形を使って行う方法はあると思います。長方形を定義して、キャンバスに描画する領域、またはソースイメージから取り出す領域をマークできます。このRectクラスには、いくつかの比較機能が組み込まれています。たとえば、ソースインを模倣するsetIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination)ために、新しい長方形に2つの画像の交差する領域のみを含めるように使用できます。次に、Canvasの描画コマンドの1つでその長方形を引数として使用して、その長方形の内側にあるソース画像からピクセルのみを取得するように指示できます。次に、描画コマンドが実行される順序によって、Z軸の描画を制御します。

于 2010-03-31T12:38:10.893 に答える