首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将画布转换为可绘制

将画布转换为可绘制
EN

Stack Overflow用户
提问于 2012-07-06 02:02:26
回答 2查看 11.6K关注 0票数 4
代码语言:javascript
运行
复制
int x = 10; 
int y = 10; 
int r = 4; 
Paint mPaint = new Paint(); 
mPaint.setColor(0xFF0000); 
Canvas mCanvas = new Canvas(); 
mCanvas.drawCircle(x,y,r,mPaint); 

有没有办法将mCanvas转换成可绘制的?我的目标是生成具有特定形状和颜色的绘图。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-06 06:22:14

对于像你的圆圈这样的简单形状,我认为Shape Drawable会更容易。对于更复杂的事情,只需创建一个位图供您的画布使用,然后创建画布并在其中绘制,然后从您的位图创建一个可绘制的。类似于:

代码语言:javascript
运行
复制
int x = 10;
int y = 10;
int r = 4;

Paint mPaint = new Paint();
mPaint.setColor(0xFF0000);

Bitmap bitmap = Bitmap.createBitmap(/* read the docs*/);
Canvas mCanvas = new Canvas(bitmap);
mCanvas.drawCircle(x,y,r,mPaint);

BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);

也许有点书呆子气(希望能增加你的理解),画布只是托管"draw“调用,并绘制到你指定的位图中。这意味着:

  1. 您的示例代码没有做太多事情,因为您没有使用位图构造画布,也没有在其上调用setBitmap()
  2. 您没有将画布转换为可绘制图形,而是从您的画布调用绘制到的位图构造可绘制图形。
票数 8
EN

Stack Overflow用户

发布于 2012-07-06 02:09:16

摘自另一篇文章,这里是做这件事的psuedo代码。

Image on canvas to JPEG file

代码语言:javascript
运行
复制
ByteArrayOutputStream baos = new ByteArrayOutputStream()
Bitmap  bitmap = Bitmap.createBitmap( view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 

// This converts the bitmap to a drawable
BitmapDrawable mDrawable = new BitmapDrawable(getResources(),bitmap);

或者,您也可以使用getDrawingCache(),如该主题的另一个答案中所述。

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

https://stackoverflow.com/questions/11349971

复制
相关文章

相似问题

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