2011-09-10 8 views
1

私はAndroidのキャンバスをどのようにマージ/結合するのだろうかと思っていました。下のコードでは、cnv_leftにボタンの左側が含まれています。 cnv_centerには中央の部分が含まれています。 cnv_textにはテキストが含まれています。私は必要なものAndroidキャンバスをマージする方法は?

でそれらのすべてをマージすることです cnv_left

  • が最初に行くように、をcnv_joined。
  • cnv_center
  • cnv_textは、cnv_centerの中央になります。
  • と反転されたcnv_leftが最後になります。

ここに私のコードは、これまでのところです:

public void drawButt() 
{ 

     float buttonScale = 1.0f;  /// general button scale ratio 
     float buttonScaleCnt = 6.0f; /// button's center part stretch ratio 

     LinearLayout LinLay = (LinearLayout)findViewById(R.id.linearLayout1); 
     ImageView iv1 = new ImageView(this); 

     Bitmap bit_left = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
     Canvas cnv_left = new Canvas(bit_left); 
     cnv_left.scale(buttonScale,buttonScale); 
     SVG svg_left = SVGParser.getSVGFromResource(getResources(), R.raw.btleft); 
    Picture picture_left = svg_left.getPicture(); 
    picture_left.draw(cnv_left); 

    Bitmap bit_center = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
     Canvas cnv_center = new Canvas(bit_center); 
     cnv_center.scale(buttonScaleCnt, buttonScale); 
     SVG svg_center = SVGParser.getSVGFromResource(getResources(), R.raw.btcnt); 
    Picture picture_cnt = svg_center.getPicture(); 
    picture_cnt.draw(cnv_center); 

    Bitmap bit_text = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
     Canvas cnv_text = new Canvas(bit_text); 
    cnv_text.scale(buttonScale, buttonScale); 
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.WHITE); paint.setTextSize(20); 
    cnv_text.drawText("R", 2, 30, paint); 


    Bitmap bit_joined = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888); 
    Canvas cnv_joined = new Canvas(bit_joined); 
    /// somehow need to somehow join the above canvases into this cnv_joined... 


     iv1.setImageBitmap(bit_joined); 
     iv1.setPadding(5, 5, 5, 5); 

     LinLay.addView(iv1); 

} 

任意のアイデア?あともう一つ、キャンバス用に空のビットマップを作成すると(Bitmap.createBitmap(100,100 ...))、私はそれらのサイズをどういうものにしていますか?はいの場合、正しいサイズはどこで得られますか?

ありがとう!ビットマップ状物質の

答えて

2

サイズ。あなたは絵よりも小さいキャンバスにPicture.drawを行う場合は、画像がビットマップのサイズに切り取られます。

コールSVG.getBounds境界を取得し、それらを置くためにビットマップコンストラクタで

ビットマップを結合するには、drawBitmapを使用してcnv_joinedにbit_left、bit_center、およびbit_textを描画する必要があります。

より良い方法は、SVGとテキストをcnv_joinedに直接描画することです。

+1

>>>より良い方法は、SVGとテキストをcnv_joinedに直接描画することです。 ありがとう、ちょうど私がcnv_joined上の場所を描画する場所を定義するにはどうすればいいですか?ちょっとしたスニペットにはとても感謝しています。 :) – Roger

関連する問題