【问题标题】:Path not drawing to canvas in android app路径未在 android 应用程序中绘制到画布
【发布时间】:2017-07-15 02:38:24
【问题描述】:

我在一个线程的两个 List 数组上加载浮点值。 加载值后,将数组设置为两个 MainActivity 静态列表数组。

这些值完美地加载到 List 数组中。在扩展 Drawable 并覆盖 onDraw() 的 DummyDraw 类中,我能够根据 MainActivity List 数组中的值绘制圆圈,但是当我尝试 创建一个路径对象并将值加载到路径对象,然后尝试绘制路径,它不会绘制。这是 onDraw() 里面的代码:

//inside onDraw() on DummyDraw class which extends Draw-able:

//in the constructor:
path = new path();

//inside onDraw():
for(int u = 0; u < MainActivity.valueList.size(); u++){
float x = MainActivity.valueList.get(u);
float y = MainActivity.valueList2.get(u);
if(u==0)path.moveTo(x,y);else path.lineTo(x,y);
//canvas.drawCircle(x,y,0.5f*densityMultiplier,points);
}

canvas.drawPath(path,points);// this doesn't draw anything to the screen

任何想法或建议,谢谢。

【问题讨论】:

  • 您是否将属性设置为Paint 对象(points)?
  • 当然可以。 @Adithya 我一直在阅读,我必须实现 path.rQuadTo()。我现在正在尝试实现此方法,但没有成功。

标签: android canvas path


【解决方案1】:

经过多次反复试验并阅读了有关 quadto 和 rQuadTo 方法的信息,我找到了一种方法,可以为我的绘图功能需求创建一个非常出色的平滑曲线近似值:

使用 List 数组上的前一个点和当前点的概念:

for(int u = 0; u < MainActivity.valueList.size(); u++){
float x = MainActivity.valueList.get(u);//current point: x value
float y = MainActivity.valueList2.get(u);//current point: y value

if(u!=0){
float previousX = MainActivity.valueList.get(u-1);
float previousY = MainActivity.valueList2.get(u-1);
float middle1 = (previousX + x)/2f;
float middle2 = (previousY + y)/2f;
path.moveTo(previousX,previousY);
path.quadTo(x,y,middle1,middle2);
path.lineTo(x,y);
canvas.drawPath(path,points);//points is the name of my paint object
path.reset();//this is probably the most important line for it to work    
}

}

上面的代码将遍历保存 x 和 y 坐标的两个数组,并创建一个非常出色的平滑曲线。然而,在放大我的视野时,我可以看到我的曲线有些轻微的模糊。有谁知道我应该如何处理我的绘画对象以消除这种模糊?

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2015-04-27
    • 2013-12-20
    • 2019-04-12
    • 2015-10-24
    相关资源
    最近更新 更多