0

問題があります。画像に灰色のオーバーレイを描画したいのですが。パスがあり、パスの外側に色を付けたいと思います。エッジがアンチエイリアス処理されていないため、クリッピングは適切ではありません(2.1で機能するようにする必要があります)。

カメラ(右側)で動作させました。SurfaceView(カメラプレビュー)とその上にビューを保持するFrameLayoutがあります。ビューはキャンバス全体のオーバーレイカラーを塗りつぶし、xfermodeを使用してパス(Mode.CLEAR)を削除します。

同じ方法を使用して、右の写真を取得します。最初にビューをImageViewの子孫にしましたが、それは完全に悪かったです。次に、ビューの下にある画像(カメラのプレビューなど)を含むImageViewを追加しましたが、同じ結果になりました。次に、フレームレイアウトから他のimageviewを使用しましたが、同じです。もちろん、私は常にbgcolorをtransparentに設定し、Color.TRANSPARENTを描画しようとしましたが、機能しませんでした。何が問題なのかわかりません。たぶんMode.CLEARはその領域の画面全体をクリアしますか?imageview(または別のsurfaceview)ではなく、カメラのsurfaceviewで動作するのはなぜですか?

私は7時間グーグルを続けていますが、実際の解決策はありません。私が悪いことをしているのを手伝ってくれて、いくつかの「トリック」を共有してくれませんか?前に言ったように、アンチエイリアスエッジ(いくつかの形状には多くの曲線と対角線があります)が必要なので、クリップできません(ストロークを描画しても、ひどいです)。

前もって感謝します。

図:http ://s16.postimage.org/72bcp5kad/img_overlay.jpg

4

1 に答える 1

0

私は解決策を見つけました。キャンバス全体を含むパスも作成し、それをEVEN_ODDで埋めます。したがって、左端のポイント->左側->左上->右上->右下->左下->左側->左端のポイント->その他のポリポイントから開始します。そして動作します:-)

于 2012-07-30T22:33:49.027 に答える