如何在畫布上獲取圖像以便在該圖像上繪製?畫布上的可繪製圖像
回答
試試這個
Bitmap mBitmap = Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter);
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
您需要加載圖像作爲位圖:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image);
然後使位圖可變的,並創建了它在畫布:
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
然後你可以在畫布上畫畫。
如果我的.png很大並且在加載後會被剪切掉?即我不想裁剪。它可以比屏幕更大,然後我會盡量使它變得可以縮放和移動。我該怎麼做?非常感謝你! –
@ perfectionm1ng看看使用BitmapRegionDecoder。它允許部分加載大圖像。所以你應該只能加載你現在渲染的圖像部分。 –
我使用代碼 Canvas cs = new Canvas(bitmap); Resources res = getResources(); 位圖bitmapx = BitmapFactory.decodeResource(res,R.drawable.overlay_good_full); 位圖bitmapxx = BitmapFactory.decodeResource(res,R.drawable.overlay_bad_full);如果(text.equals(「Good」)) { cs.drawBitmap(bitmapx,0,0,tPaint); } else cs.drawBitmap(bitmapxx,0,0,tPaint); } –
package com.android.jigsawtest;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class SurafaceClass extends SurfaceView implements
SurfaceHolder.Callback {
Bitmap mBitmap;
Paint paint =new Paint();
public SurafaceClass(Context context) {
super(context);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mBitmap, 0, 0, paint);
}
}
在onDraw中創建一個新的Paint對象對性能不利 –
好吧thnks ..我已經更新了答案 – user1140237
我不知道,你必須將圖像作爲位圖加載爲你的代碼(http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/ProgressBar.java#ProgressBar.onDraw%28android.graphics.Canvas%29) 使用Drawable.draw(Canvas c)
。
的好方法繪製在畫布上繪製對象不是自己的解碼,但它留給系統可以這樣做:
Drawable d = getResources().getDrawable(R.drawable.foobar);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
這將有各類可繪製的,不僅是位圖工作。而且這也意味着如果只改變大小,您可以再次使用相同的drawable。
如何使用動畫列表(多幀)動畫與畫布方法? – RichieHH
非常有用!至少當你需要一個沒有火箭科學的背景圖片時! – Asim
@RichieHH我在SurfaceView上有我的背景(可以說是浪費),並且表面視圖嵌入在Framelayout中,並且該框架佈局包含ImageView,然後生成動畫 - 也許這是您的選擇? – AgentKnopf
也可以使用這種方式。將你的大drawble適合改變你的畫布:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable);
yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
BitmapFactory類沒有方法「BitmapFactory.decodeResource(Resource,Drawable);」... – Crisic
@Crisic我會假設'yourDrawable'是一個整數。 –
Drawable d = ContextCompat.getDrawable(context, R.drawable.***)
d.setBounds(left, top, right, bottom);
d.draw(canvas);
- 1. 在畫布上繪製我的可繪製圖像?
- 2. 在HTML5的畫布上繪製圖像
- 3. HTML5畫布僅繪製可見圖像
- 4. HTML5畫布繪製圖像
- 5. 在畫布上繪製對象/圖像
- 6. 在畫布上繪製背景圖像
- 7. 繪製大型圖像到畫布上
- 8. 在縮放畫布上繪製圖像
- 9. 在畫布上繪製旋轉圖像
- 10. 在HTML5畫布上繪製圖像
- 11. 閃存上傳圖像繪製畫布
- 12. 在畫布上繪製陣列圖像?
- 13. 在html5畫布上繪製圖像
- 14. 用JQuery在畫布上繪製圖像
- 15. 在畫布上繪製圖像部分
- 16. 如何變暗畫布或畫布上繪製的圖像?
- 17. 安排畫布上繪製的繪圖
- 18. 你可以在畫布上繪製弧形圖像嗎?
- 19. Android的畫布繪製多幀圖像
- 20. 繪製畫布內部的圖像
- 21. 在畫布上繪製圖像拉伸圖像?
- 22. 從畫布上的像素數組中繪製圖像putImageData
- 23. 在畫布上繪製像素橢圓
- 24. 在Android上的畫布上繪製多個圖像
- 25. 畫布純繪製vs PNG圖像
- 26. 將圖像繪製到html5畫布
- 27. HTML5畫布繪製多個圖像
- 28. 畫布元素無法繪製圖像
- 29. 將圖像繪製到畫布中
- 30. 畫布圖像繪製失敗
但是,如果使用canvas.drawBitmap(mBitmap,0,0,mBitmapPaint);它可以工作,並將保存的圖像加載到畫布上,但同時撤消和重做停止工作,請檢查我的代碼http://pastebin.com/cP9w6stm – AndroidDev