gpt4 book ai didi

java - Canvas.drawLines 显示不连续的线段

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:54 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Android How to draw a smooth line following your finger

我是 Android 和 java 编程的新手,并且一直在尝试开发移动应用程序。我最近创建了一个 View ,它只是让绘制线条与用户的手指移动同步。但是,我在使用 Canvas.drawLines 方法时遇到了一些麻烦。

我得到的不是所有点之间的连续线集,而是线段之间有断点的虚线图案:

Broken Line Segments in Canvas.DrawLines

下面是一组样本数据和简单的代码来重现问题(点数据取自真实的手指滑动):

public class SomeView extends android.view.View 
{
private float[] _data = { 292.36545f, 104.37576f, 285.3567f, 112.39249f, 274.34293f, 113.39456f, 254.3179f, 115.39874f, 248.3104f, 116.40082f, 228.28535f, 118.405f, 214.26784f, 119.407104f, 211.26408f, 119.407104f, 204.25533f, 120.40918f, 202.25282f, 120.40918f, 201.25157f, 121.411255f, 199.24907f, 124.41754f, 197.24657f, 125.41962f, 196.24532f, 130.43005f, 195.24406f, 139.44885f, 197.24657f, 144.45929f };
private Paint _paint;

public SomeView( Context c, AttributeSet attrs)
{
super( c, attrs );
_paint = new Paint();
_paint.setColor(Color.BLUE);
_paint.setStrokeWidth(6);
}

@Override
public void onDraw(Canvas canvas)
{
canvas.drawLines( _data, _paint);
}
}

在绘制出每个点并将其叠加到线上后,我意识到问题实际上是每个点都没有连接,只是每两个点连接一次。该方法不是将点 1 连接到点 2 到点 3 等等,而是连接 1 到 2,然后连接 3 到 4,如下所示:

enter image description here

我可以几乎通过再次调用drawLines 并提供一个偏移量来获得我想要的东西,以便其他对也被绘制在一起,但这看起来效率不高并且对我来说通常很笨重,而且线条仍然不是完全平滑(在拐角处略微起伏)。

所以,我的问题是;我做错了什么,如何在给定一些点的情况下绘制一条简单、平滑的线?哎呀,忘了点,如果有更好的方法用一条线来追踪用户的手指,我会洗耳恭听。提前致谢。

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