gpt4 book ai didi

java - 在 ImageView 上绘图

转载 作者:行者123 更新时间:2023-12-02 05:38:42 25 4
gpt4 key购买 nike

我正在尝试绘制图像,稍后我将与绘图一起保存。我的 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);
}
}

最佳答案

好的,您走在正确的道路上。您缺少的是无效调用,这将导致操作系统调用 View 的 OnDraw。

每次想要更新 View 时调用 invalidate。但请注意,您的类只有一个路径对象,因此只会绘制最后一段。

如果我没记错的话,你应该保存 Path 对象的 ArrayList 。在 onDraw 中,您应该循环遍历它们并一个接一个地绘制它们。

关于java - 在 ImageView 上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com