Как мне перенести изображение на холст, чтобы рисовать на нем?
97
Как мне перенести изображение на холст, чтобы рисовать на нем?
Хороший способ нарисовать Drawable на холсте - это не декодировать его самостоятельно, а оставить это делать системе:
Drawable d = getResources().getDrawable(R.drawable.foobar, null);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Это будет работать со всеми видами чертежей, а не только с растровыми изображениями. И это также означает, что вы можете повторно использовать тот же объект для рисования снова, если изменится только размер.
Вам нужно загрузить изображение как растровое изображение:
Затем сделайте растровое изображение изменяемым и создайте поверх него холст:
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
Затем вы можете рисовать на холсте.
источник
также вы можете использовать этот способ. это изменит размер вашего большого рисунка на холсте:
Resources res = getResources(); Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable); yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
источник
yourDrawable
это целое число.Drawable d = ContextCompat.getDrawable(context, R.drawable.***) d.setBounds(left, top, right, bottom); d.draw(canvas);
источник
setBounds
. Без него ничего не отображалось.попробуй это
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); }
источник
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); } }
источник