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