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
转换成Drawable?我的目标是生成具有特定形状和颜色的drawable。将Canvas转换为Drawable
感谢
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
转换成Drawable?我的目标是生成具有特定形状和颜色的drawable。将Canvas转换为Drawable
感谢
对于简单的形状像你的圈子,我认为Shape Drawable会更容易。对于更复杂的事情,只需为您的Canvas创建一个Bitmap来使用,然后创建Canvas并将其绘制,然后从您的Bitmap创建一个Drawable。喜欢的东西:
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);
要有些可能迂腐(希望提高你的理解),画布刚主持“画”的呼叫,并绘制到您指定的位图。这意味着:
setBitmap()
。从其他岗位采取这里是伪代码来做到这一点。
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()作为在该线程的另一个答案概括。
Shape Drawables听起来不错,适合我的情况。我创建了一些xml,但是当我尝试绘制它们时,我没有看到它们。我的普通PNG文件虽然工作正常,但.. – Johan 2012-07-05 22:50:11
@Johan这听起来像一个完全不同的问题,你应该尝试自己解决,然后问如果有必要的另一个问题。 – 2012-07-05 23:04:32