2017-07-15 14 views
0

スレッド上の2つのリスト配列に浮動小数点値を読み込みます。 値がロードされると、配列は2つのMainActivity静的List配列に設定されます。パスがアンドロイドアプリでキャンバスに描画されない

値は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座標を保持する二つの配列を反復し、見て非常に優れた滑らかな曲線を作成します。しかし、私の視野を拡大すると、私のカーブにはややぼやけが見えます。このぼやけを取り除くために、私のペイントオブジェクトで何をすべきか知っていますか?

関連する問題