gpt4 book ai didi

java - 从最后一行的终点开始新行

转载 作者:行者123 更新时间:2023-11-29 18:26:30 24 4
gpt4 key购买 nike

我在一个 Android 应用程序中创建了 Canvas ,您可以在其中画出跟随手指的线条。在那一点上一切正常,但我想从最后一行的端点坐标开始新行。

我想我可以把最后一行的结束坐标放在新行的 action down 事件中,但那样就没有第一行的坐标,否则它不知道从哪里开始

目前我的代码是这样的,这只是线条,没有连接。这在某种程度上什至可能吗?

    protected float mStartX;
protected float mStartY;

protected float mx;
protected float my;

private void drawLine(android.graphics.Canvas canvas) {

float dx = Math.abs(mx - mStartX);
float dy = Math.abs(my - mStartY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
canvas.drawLine(mStartX, mStartY, mx, my, mPaint);
}
}

private void lineDrawEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
isDrawing = true;
mStartX = mx;
mStartY = my;
invalidate();
break;
case MotionEvent.ACTION_MOVE:
invalidate();
break;
case MotionEvent.ACTION_UP:
isDrawing = false;
mCanvas.drawLine(mStartX, mStartY, mx, my, mPaintFinal);
invalidate();
break;
}
}

最佳答案

是的,可能只是存储最后一行的结束点以用作下一行的开始,正如您自己所说的。

如果您已经有了起点,您需要做的是更改ACTION_DOWN 的行为

类似的东西:-

protected float mStartX;
protected float mStartY;

protected float mx;
protected float my;

private void drawLine(android.graphics.Canvas canvas) {

float dx = Math.abs(mx - mStartX);
float dy = Math.abs(my - mStartY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
canvas.drawLine(mStartX, mStartY, mx, my, mPaint);
}
}

private void lineDrawEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
isDrawing = true;
// If this is the first line then the start values will be
// uninitialised, so only use them for the start of the first line
// Otherwise they will be set by the previous UP event
if (mStartX == null && mStartY == null) {
mStartX = mx;
mStartY = my;
}
invalidate();
break;
case MotionEvent.ACTION_MOVE:
invalidate();
break;
case MotionEvent.ACTION_UP:
isDrawing = false;
mCanvas.drawLine(mStartX, mStartY, mx, my, mPaintFinal);
// Set the Start point of the next line to end of current
mStartX = mx;
mStartY = my;
invalidate();
break;
}
}

您可能还想将每个点也添加到配对对象列表中,这样您就可以在之后对线做一些事情。

关于java - 从最后一行的终点开始新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58670710/

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