2011-07-25 17 views
21

Parece que debe ser algo trivial, sin embargo, en mi aplicación de Android, estoy utilizando lienzo para dibujar una serie de líneas que están conectadas entre sí. Por alguna razón, mis líneas son muy débiles y delgadas. Me preguntaba cómo puedo hacer que mis líneas sean más gruesas. Aquí está mi código ..Línea de dibujo de lienzo de Android: hacer la línea más gruesa

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);  

    } 

Otra cosa is..my líneas y círculos que dibujan son siempre de color negro .. setColor() no parece tener ningún efecto. He intentado usar los nombres de color (por ejemplo, color.red) e incluso sus valores hexadecimales (por ejemplo, 0xffff0000)

+0

¿Puedes publicar un código más de esta clase, como todo el onDraw? o la clase si es lo suficientemente pequeña. Se ve bien tal como es. ¿Por qué creaste el objeto Paint dentro del ciclo? todas las iteraciones usan el mismo 'myPaint', por lo que es mejor crearlo una vez fuera del ciclo. – Shaunak

+0

Lo he movido fuera del ciclo ahora. Ese es todo mi código dentro del método onDraw. Solo quiero saber cómo puedes hacer que las líneas sean más gruesas. Muestra las líneas, pero son demasiado delgadas – user859348

+0

Intenta eliminar el marcador anti_alias e intenta usar 8.0 en su lugar. – Shaunak

Respuesta

18

intentar incluir esta línea justo después de que decleare 'MyPaint'

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

cómo hacerlo más delgado? – AndroidCrazy

+2

que lo está estirando: P – Shaunak

+1

no funcionó para mí. En JavaDoc, se da así: NOTA: dado que una línea siempre está "enmarcada", el Estilo se ignora en la pintura. –

1

¿Qué ocurre si eliminas ANTI_ALIAS_FLAG? Además, debe mover el constructor Paint fuera del ciclo for, para que no se vuelva a crear en cada iteración.

+0

punto justo sobre la creación de una instancia de pintura. El ANTI_ALIAS_FLAG está ahí porque leí aquí que puede ayudar a renderizar la línea http://stackoverflow.com/questions/5377052/drawline-problem-with-paint-strokewidth-1-in-android – user859348

+1

ANTI_ALIAS_FLAG simplemente suavizará la línea si está tratando de dibujar curvas o líneas inclinadas. – Shaunak

22

Cambiar el valor de

myPaint.setStrokeWidth(8); 

a un número entero más grande, por ejemplo:

myPaint.setStrokeWidth(50); 

lo hará hacer que la línea sea más gruesa

ver también Paint.setStrokeWidth(float)

+0

acutally esto funcionó en lugar de la respuesta "marcada a la derecha" –

+0

¡esta debería ser la respuesta! –

Cuestiones relacionadas