Red de conocimiento informático - Conocimiento de la instalación - ¿Encuentra el uso de canvas.drawPicture(p); en Android? ¿Busca un ejemplo sencillo?

¿Encuentra el uso de canvas.drawPicture(p); en Android? ¿Busca un ejemplo sencillo?

Este ejemplo puede ser un poco más complicado, pero es muy útil:

public?class?MainActivity?extends?Activity?{

DrawingView?dv ?;

p>

privado?PaintmPaint;

¿Privado? p>p>privado?DrawingManager?mDrawingManager=null;

@Override

¿protegido?void?onCreate(Bundle?savedInstanceState)?Establecer color (Color.GREEN);

mPaint.setStyle (Paint.Style.STROKE);

mPaint .setStrokeJoin (Paint.Join.ROUND) ;

mPaint.setStrokeCap(Paint.Cap.ROUND);

mPaint.setStrokeWidth(12);?

} público?

privado?Canvas?mCanvas;

privado?PathmPath;

privado?PaintmBitmapPaint;

Contexto?context;

¿privado?Paint ?circlePaint;

¿privado?Path?circlePath;

público?DrawingView(Context?c)?{

super (c);

context=c;

mPath?=?new?Path();

mBitmapPaint?=?new?Paint(Paint.DITHER_FLAG );?

circlePaint?=?new?Paint();

circlePath?=?new?Path();

circlePaint.setAntiAlias(true) ;

circlePaint .setColor( color.

circlePaint.setStyle(Paint.Style.STROKE);

circlePaint.setStrokeJoin(Paint.Join.MITER);

circlePaint.setStrokeWidth(4f); ?

}

@Override protected?{

super.onSizeChanged(w,?h,?oldw,?oldh);

mBitmap?ARGB_8888);

mCanvas?=?new?Canvas(mBitmap);

}

@Override

¿protegido? void?onDraw(Canvas?canvas)?canvas.drawPath(?circlePath,?circlePaint);

}

privado?float?mX,?mY;

privado?static?final?float?TOUCH_TOLERANCE?=?4;

privado?void?touch_start(float?x, ?float?y)?{

mPath.reset( );

mPath.moveTo(x,?y);

mX?=?x;

mY?=?y;

}

¿privado?{

float?dx?=?Math.abs(x?-?mX);

float?dy?=? Math.abs(y?-?mY);

if(dx?gt;=?TOUCH_TOLERANCE?|?dy?gt;=?TOUCH_TOLERANCE)?TOLERANCE)?{ mPath.quadTo(mX,? mY, ? (x? ?mX)/2, ? (y? ?mY)/2);

mX?=?x;

mY?=?y;

circlePath.reset()?reset();

circlePath.addCircle(mX,?mY,?30,?Path.Direction.CW);

}

}

¿privado?{

mPath.lineTo(mX,?mY);

circlePath.reset();

//?Para que no dibujemos repetidamente

mPath.reset();

}

@Override

public ? boolean?onTouchEvent (¿MotionEvent?event)?{

float?x?=?event.getX();

float?y?=?event.getY();

p>

¿cambiar?(event.getAction())?{

caso?ACTION_MOVE ACTION_MOVE:

touch_move(x,?y);

invalidar();

romper;

caso?MotionEvent.ACTION_UP:

touch_up();

inval

fechar().

romper;

}

regresar?verdadero;

}?

} }

El lienzo se dibuja dondequiera que vaya tu dedo. Imagen: