gpt4 book ai didi

java - 绘制圆圈而不删除先前的圆圈

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

目前,我每次单击屏幕时都会绘制圆圈,但是当我绘制一个圆圈时,我之前绘制的圆圈就会被删除。有没有办法继续点击并使上一个圆圈保留在屏幕上?

public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
drawCirc = true;
xTouch = event.getX();
Log.d("keyboard", "xpos" + xTouch);
yTouch = event.getY();
break;

case MotionEvent.ACTION_UP:
drawCirc = false;
}
return true;
}


public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
if(drawCirc) {
if (xTouch < 150 && xTouch>0) {
paint.setColor(Color.RED);
canvas.drawCircle(150, 500, 100, paint);
invalidate();
}
}
}

最佳答案

问题是您没有保存点。您需要创建一个配对列表或 map 并保存所有点。

final List<Pair<Integer, Integer> points = new ArrayList();

public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
drawCirc = true;
xTouch = event.getX();
Log.d("keyboard", "xpos" + xTouch);
yTouch = event.getY();
points.add(new Pair(xTouch, yTouch));
break;

case MotionEvent.ACTION_UP:
drawCirc = false;
}
return true;
}


public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
if(drawCirc) {
for (Pair<Int, Int> point : points) {
xTouch = point.first;
yTouch = point.second;
if (xTouch < 150 && xTouch>0) {
paint.setColor(Color.RED);
canvas.drawCircle(150, 500, 100, paint);
}
}
}
}

上面的代码应该让您大致了解要做什么。

关于java - 绘制圆圈而不删除先前的圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138650/

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