2017-07-15 45 views
0

我加载了线程上两个List数组上的浮点值。 一旦这些值被加载,数组就被设置为两个MainActivity静态列表数组。在Android应用程序中未绘制到画布的路径

这些值完全加载到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 

任何想法或建议,谢谢。

+0

您是否将'Paint'对象('points')的属性设置为? – Adithya

+0

当然是。 @Adithya我一直在阅读,我必须实现path.rQuadTo()。我正试图现在实施这种方法,但没有成功。 –

回答

0

大量的试验和错误,并阅读有关quadto和rQuadTo方法后,我找到了一种方法来创建平滑曲线的一个非常优秀的逼近我的绘图功能需求:使用以往和当前点的概念

在列表数组上:

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坐标并创建一个非常好看的平滑曲线。但是,放大我的视野后,我可以看到我的曲线有些模糊。有谁知道我应该如何处理我的油漆对象以消除这种模糊现象?