Jak mogę przenieść obraz na płótno, aby rysować na tym obrazie?
96
Jak mogę przenieść obraz na płótno, aby rysować na tym obrazie?
Dobrym sposobem na narysowanie rysunku do rysowania na płótnie nie jest samodzielne odkodowanie go, ale pozostawienie tego systemowi:
Drawable d = getResources().getDrawable(R.drawable.foobar, null);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Będzie to działać ze wszystkimi rodzajami rysunków, nie tylko bitmapami. Oznacza to również, że możesz ponownie użyć tego samego rysunku, jeśli zmieni się tylko rozmiar.
Musisz załadować swój obraz jako bitmapę:
Następnie ustaw zmienną bitmapę i utwórz na niej płótno:
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
Następnie możesz rysować na płótnie.
źródło
również możesz użyć w ten sposób. zmieni to duże dopasowanie do twojego płótna:
Resources res = getResources(); Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable); yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
źródło
yourDrawable
jest to liczba całkowita.Drawable d = ContextCompat.getDrawable(context, R.drawable.***) d.setBounds(left, top, right, bottom); d.draw(canvas);
źródło
setBounds
. Bez tego nic się nie wyświetlało.Spróbuj tego
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); }
źródło
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); } }
źródło