0

複数の面を持つビットマップがあります。顔の四角形が元の色になり、残りの領域が黒くなるように、各面を強調表示したいと思います。

私は次のようなことをしました、

                   for(int i=0; i<getNumFaces(); i++)
                    {   

                    Rect rect = getRect();                                  
                    canvas = new Canvas(mutableBitmap);
                    canvas.clipRect(rect, Region.Op.DIFFERENCE);
                    canvas.drawColor(Color.BLACK, Mode.SRC_ATOP);


                    }                       

                  confirmationView.setImageBitmap(mutableBitmap);   

しかし、これは私のイメージ全体を黒くします。原因はなんとなくわかるのですが、解決策が思いつきません。

4

1 に答える 1

0

もっと良い方法があるかもしれませんが、これを試してください:

               canvas = new Canvas(mutableBitmap);
               for(int i=0; i<getNumFaces(); i++)
                {   

                Rect rect = getRect();                                  
                canvas.clipRect(rect, Region.Op.UNION);


                }                       
                Rect all = new Rect(0,0,mutableBitmap.getWidth(), mutableBitmap.getHeight());
                canvas.clipRect(all , Region.Op.DIFFERENCE);
                canvas.drawColor(Color.BLACK);

              confirmationView.setImageBitmap(mutableBitmap);   

注:実際には実行していません。しかし、保持したいすべての四角形で構成される 1 つの大きなクリッピング領域を構築します。次に、保持したい領域を除くすべてのビットマップで構成されるクリップを作成します。次に、残しておきたくない部分に色を付けます。

于 2014-02-06T03:37:29.600 に答える