2017-07-15 4 views
0

Ich lade Float-Werte auf zwei List-Arrays auf einem Thread. Sobald die Werte geladen wurden, werden die Arrays auf zwei statische Array-Arrays von MainActivity festgelegt.Pfad nicht in Canvas in Android App

Die Werte werden perfekt in die List-Arrays geladen. In meiner DummyDraw-Klasse, die Drawable erweitert und onDraw() überschreibt, kann ich Kreise basierend auf den Werten in den MainActivity-List-Arrays zeichnen, aber wenn ich versuche, ein Pfadobjekt zu erstellen und die Werte auf das Pfadobjekt zu laden, und danach versuche den Weg zu zeichnen, er wird nicht zeichnen. Hier ist der Code innerhalb 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 

Irgendwelche Ideen oder Vorschläge, danke.

+0

haben Sie Attribute zu 'Paint' Objekt (' Punkte') gesetzt? – Adithya

+0

ja natürlich. @Adithya Ich habe gelesen und ich muss path.rQuadTo() implementieren. Ich versuche jetzt diese Methode zu implementieren, aber keinen Erfolg. –

Antwort

0

Nach viel Versuch und Irrtum und Lesen über die quadto und rQuadTo Methoden, fand ich einen Weg, um eine sehr gute Annäherung an eine glatte Kurve für meine Grafikfunktion erstellen muss:

den Begriff der vorherigen und aktuellen Punkt mit auf den Listenfeldern:

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  
} 

} 

den obigen Code wird durch zwei Arrays iterieren, die eine sehr gute suchen glatte Kurve hält x- und y-Koordinaten und erstellen. Beim Zoomen in meine Ansicht sehe ich jedoch eine leichte Unschärfe in meiner Kurve. Weiß jemand, was ich mit meinem Farbobjekt machen soll, um diese Unschärfe zu beseitigen?

Verwandte Themen