[英]Drawing over an ImageView
我正在尝试绘制一张图片,稍后我会用图纸保存。 我的xml只有ImageView,我试图覆盖onDraw。 它只让de Canvas工作,但没有图像。
public class Body1 extends View {
public LayoutParams params;
private Path path = new Path();
private Paint brush = new Paint();
public Body1(Context context) {
super(context);
brush.setAntiAlias(true);
brush.setColor(Color.MAGENTA);
brush.setStyle(Paint.Style.STROKE);
brush.setStrokeJoin(Paint.Join.ROUND);
brush.setStrokeWidth(8f);
params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float pointX = event.getX();
float pointY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(pointX, pointY);
return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(pointX, pointY);
break;
default:
return false;
}
postInvalidate();
return false;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, brush);
}
}
好的,你走在正确的道路上。 您缺少的是无效调用,这将导致操作系统调用视图的OnDraw。
每次要更新视图时调用都会失效。 但请注意,您的类只有一个路径对象,因此只绘制最后一个段。
如果我没有弄错你应该持有Path
对象的ArrayList
。 在onDraw
你应该遍历它们并一个接一个地绘制它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.