首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并Android画布?

如何合并Android画布?
EN

Stack Overflow用户
提问于 2011-09-10 18:24:44
回答 1查看 1.5K关注 0票数 1

我想知道,我如何合并/加入Android画布。在下面的代码中,我有一个cnv_left,它包含一个按钮的左边部分。cnv_center包含中心部分。cnv_text包含文本。

我需要的是将它们合并到cnv_joined中,以便

  • cnv_left先走,cnv_center.
  • cnv_text则是cnv_center.
  • and的中心,cnv_left是最后一个。

到目前为止,这是我的代码:

代码语言:javascript
复制
 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.),我给它们多大的尺寸有关系吗?如果是的话,我应该在哪里买到合适的尺码?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-10 18:37:48

位图的大小很重要。如果对小于图片的画布执行Picture.draw,则图像将被裁剪为位图的大小。

调用SVG.getBounds获取边界,并将它们放入Bitmap构造函数中。

要将位图连接在一起,必须使用bit_left、bit_center和bit_text在cnv_joined上使用drawBitmap。

更好的方法是直接在cnv_joined上绘制SVG和文本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7373724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档