2011-07-25 3 views
21

Cela semble être quelque peu trivial, mais dans mon application Android, j'utilise la toile pour dessiner une série de lignes qui sont connectés ensemble. Pour une raison quelconque mes lignes sont très très faibles et minces. Je me demandais comment puis-je rendre mes lignes plus épaisses? Voici mon code ..Ligne de dessin toile Android - rendre la ligne plus épaisse

for(int i=1; i<myArrayListOfValues.size(); i++){ 

     Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     myPaint.setStrokeWidth(8/*1 /getResources().getDisplayMetrics().density*/); 
     myPaint.setColor(0xffff0000); //color.RED 

     canvas.drawLine(myArrayListOfValues.get(i), myArrayListOfValues.get(i), myArrayListOfValues.get(i-1), myArrayListOfValues.get(i-1), myPaint);  

    } 

Une autre des lignes et des cercles de is..my chose que je dessine sont toujours noirs .. setColor() ne semble jamais avoir aucun effet. J'ai essayé d'utiliser les noms de couleur (par exemple color.red) et même leurs valeurs hexadécimales (par exemple 0xffff0000)

+0

Pouvez-vous poster un peu plus de code de cette classe, comme l'ensemble onDraw? ou la classe si c'est assez petit. Ça a l'air bien comme ça. Pourquoi avez-vous créé l'objet Paint à l'intérieur de la boucle? toutes vos itérations utilisent le même 'myPaint' donc il est préférable de le créer une fois en dehors de la boucle. – Shaunak

+0

Je l'ai déplacé en dehors de la boucle maintenant. C'est tout mon code dans la méthode onDraw. Je veux juste savoir comment vous pouvez rendre les lignes plus épaisses. Il affiche les lignes mais elles sont trop fines. – user859348

+0

Essayez de supprimer le drapeau anti_alias, et essayez d'utiliser 8.0 à la place. – Shaunak

Répondre

18

Essayez d'inclure cette ligne juste après decleare 'mypaint'

mypaint.setStyle(Paint.Style.STROKE); 
+0

comment le rendre mince? – AndroidCrazy

+2

qui l'étire: P – Shaunak

+1

cela n'a pas fonctionné pour moi. Dans JavaDoc, c'est donné comme ça: NOTE: comme une ligne est toujours "encadrée", le style est ignoré dans la peinture. –

1

Que se passe-t-il si vous supprimez le ANTI_ALIAS_FLAG? En outre, vous devez déplacer le constructeur Paint en dehors de la boucle for, afin qu'il ne soit pas recréé à chaque itération.

+0

juste point sur la création d'une instance de peinture. Le ANTI_ALIAS_FLAG est là parce que je lis ici qu'il peut aider à rendre la ligne http://stackoverflow.com/questions/5377052/drawline-problem-with-paint-strokewidth-1-in-android – user859348

+1

ANTI_ALIAS_FLAG va simplement lisser le ligne si vous essayez de dessiner des courbes ou des lignes inclinées. – Shaunak

22

Modifiez la valeur de

myPaint.setStrokeWidth(8); 

à un plus grand nombre entier, par exemple:

myPaint.setStrokeWidth(50); 

il sera rendre la ligne plus épaisse

voir aussi Paint.setStrokeWidth(float)

+0

acutally cela a fonctionné au lieu de la réponse "marqué juste" –

+0

cela devrait être la réponse à la place! –