2012-11-09 8 views
6

私は8x8イメージを持っています。 (ビットマップ - 変更可能)Androidカスタムブラシのパターン/画像

PathPaintオブジェクトを私のSurfaceViewに与えて、私がしたいのは、形を描くことができることです。

私ができることは、無地で形を塗ることだけです。どのようにパターンを描くことができますか?

Example

画像では、ブラシパターン(クロス)を見ることができます。十字架からドーナツ、エルフまで何でもかまいません。

このパターンの背景を描くにはどうすればいいですか?

また、最終的に色を適用したいと考えています。

これまでのところ、私の理論は、形状のクリップ領域を作成し、領域がカバーされるまでビットマップをタイルすることですが、これは処理の極端な過剰です。理想的ではない。

カラーリングに関しては、ブラシをアルファに編集し、背景色で塗りつぶして、上に画像を描画することができます。そのような模様の実際の問題はそれがタイリングしている。

Iveは、同様の性質のいくつかの質問を見つけましたが、すべて回答がなく、私の状況には当てはまりません。 (ビューでのxmlの使用など)

答えて

18

あなたはこれをチェックしましたか?blog?その使用BitmapShader

例:

//Initialize the bitmap object by loading an image from the resources folder 
    fillBMP = BitmapFactory.decodeResource(m_context.getResources(), R.drawable.cross); 
    //Initialize the BitmapShader with the Bitmap object and set the texture tile mode 
    fillBMPshader = new BitmapShader(fillBMP, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); 

    fillPaint.setStyle(Paint.Style.FILL); 
    //Assign the 'fillBMPshader' to this paint 
    fillPaint.setShader(fillBMPshader); 

    //Draw the fill of any shape you want, using the paint object. 
    canvas.drawCircle(posX, posY, 100, fillPaint); 
+0

パフォーマンスの問題に関するすべての提案?キャンバス上でビットマップを素早く描画しているので、UIが重くなります。パフォーマンスが非常に低下します。 –