gpt4 book ai didi

android-canvas - 在android中从一个点拖动到另一个点的线条绘制

转载 作者:行者123 更新时间:2023-12-04 05:02:56 26 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

6 个月前关闭。



Improve this question




我想制作一个应用程序,当我触摸屏幕上的一个点并拖动到另一个位置时,在 ACTION_UP 上绘制一条线,然后从 ACTION_UP 位置绘制另一条线到其他点,依此类推。但是我们有这条线绘制新线时,之前绘制不应该消失。

最佳答案

public class LineDrawerView extends View 
{
public LineDrawerView(Context context, AttributeSet attrs) {
super(context, attrs);
}

ArrayList<Rect> lines= new ArrayList<Rect>();
int x1, y1;
int x2, y2;
boolean drawing=false;

@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);

canvas.drawColor(Color.YELLOW);

Paint p= new Paint();
p.setColor(Color.BLACK);

if (drawing)
canvas.drawLine(x1, y1, x2, y2, p);
else
for (int i=0; i<lines.size(); i++)
{
Rect currline= lines.get(i);
canvas.drawLine(currline.left, currline.top, currline.right, currline.bottom, p);
}
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
boolean result=false;
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
x1=x2= (int)event.getX();
y1=y2= (int)event.getY();
drawing=true;
result=true;
break;
case MotionEvent.ACTION_MOVE:
x2= (int)event.getX();
y2= (int)event.getY();
result=true;
break;
case MotionEvent.ACTION_UP:
x2= (int)event.getX();
y2= (int)event.getY();
lines.add(new Rect(x1, y1, x2, y2));
drawing=false;
result=true;
break;
}

if (result) invalidate();
return result;
}
}

关于android-canvas - 在android中从一个点拖动到另一个点的线条绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896442/

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