Android – 如何将一条路径叠加在另一条路径之上

Android – 如何将一条路径叠加在另一条路径之上,第1张

概述我目前有以下代码: private void drawGreen(Canvas canvas) { greenPaint.setColor(0xFF00AA00); if (start) { greenPath = new Path(); greenPath.reset(); greenPath.moveTo(pathArray 我目前有以下代码:

private voID drawGreen(Canvas canvas) {    greenPaint.setcolor(0xFF00AA00);    if (start) {        greenPath = new Path();        greenPath.reset();        greenPath.moveto(pathArrayX.get(0),pathArrayY.get(0));        start = false;    }    if (isInsIDeCircle(pathArrayX.get(pathIndex),pathArrayY.get(pathIndex),curX,curY,TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,25,getResources().getdisplayMetrics()))) {        greenPath.lineto(pathArrayX.get(pathIndex),pathArrayY.get(pathIndex));        canvas.drawPath(greenPath,greenPaint);        pathIndex++;    }}private boolean isInsIDeCircle(float x,float y,float centerX,float centerY,float radius) {    return Math.pow(x - centerX,2) + Math.pow(y - centerY,2) < Math.pow(radius,2);}

在我的应用程序中,我首先绘制一条红色路径,其坐标存储在ArrayLists pathArrayX和pathArrayY中.我正在跟踪在鼠标下移动的圆形ImageVIEw的X和Y坐标,并且当用户从头到尾悬停在路径上时,我希望用绿色路径覆盖红色路径.当用户盘旋在红色路径上时,他们已经完成的红色路径的部分将被沿着相同段的绿色路径覆盖. ImageVIEw(curX和curY)的X和Y坐标是从正在运行的线程计算的.

但是,我的应用程序似乎根本没有绘制绿色路径.我在这里做错了吗?

解决方法 这个功能甚至被调用了吗?

假设它在onDraw(Canvas)中被调用,看起来它可能缺少循环的外部代码.看到你最后在做pathIndex,你使用的是while循环吗?如果你只是要循环遍历点,那么使用for循环,因为如果忘记增加计数器或做错误,或者在多个地方执行,while循环更容易陷入无限循环.

附注:如果布尔开始标志仅用于懒惰地初始化greenPath,则应该废弃它并使用if(greenPath == null){作为一般做法.使用可以直接从对象推断的状态,如果可以帮助它,则不使用标志,这使代码更清晰.

总结

以上是内存溢出为你收集整理的Android – 如何将一条路径叠加在另一条路径之上全部内容,希望文章能够帮你解决Android – 如何将一条路径叠加在另一条路径之上所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1127907.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存