2008-11-23 18 views

Respuesta

4

Puede dibujar una línea de 1 píxel de longitud en la coordenada en cuestión; eso debería lograr lo que quieres.

13

Quartz no es una API orientada a píxeles, y sus contextos no son necesariamente búferes de píxeles. Si desea dibujar pixmaps, cree un contexto de mapa de bits con CGBitmapContextCreate(). Proporciona un búfer, que puede manipular directamente y puede copiar a otro contexto creando un CGImage desde el mismo búfer usando CGImageCreate() y dibujando eso.

21
CGContextFillRect(context, CGRectMake(x,y,1,1)); 
0

estoy teniendo el mismo problema - me parece la mejor solución es similar a la anterior, pero al menos no dejar algo que se parece a un "guión" ... por supuesto, debe asegurarse x/y son ambos> 0

CGContextFillRect (contexto, CGRectMake (x - 0.5, y - 0.5, 1.0, 1.0));

7

Obtuve un punto (línea de longitud cero) para dibujar después de establecer los límites de línea a kCGLineCapRound. El límite de línea predeterminado no tiene longitud, por lo que no se puede dibujar.

El argumento de que un punto no tiene tamaño es tonto. Las líneas no tienen ancho pero podemos dibujarlas (usando el "ancho de línea" desde el estado de dibujo). Un punto debe dibujar exactamente de la misma manera, y con diferentes límites de línea, creo que sí.

Tal vez este comportamiento es nuevo?

+1

No, no lo es. Un punto es solo eso: un solo punto. El tamaño es la distancia entre al menos un par de puntos. Los límites de línea son adicionales a la longitud de la línea que dibuja; en el caso de una tapa redonda, el radio es la mitad del ancho de la línea, por lo que una línea de longitud cero con tapas redondas con un ancho de línea de 1 pt dibuja dos tapones de radio de 1/2 pt sin nada en medio, formando así un círculo de 1 diámetro de pt. Y no, ese comportamiento no es nuevo: los límites de línea, y la mayoría del resto de Quartz, vinieron a través de PDF desde PostScript, que data de 1985. –

+4

No quise sugerir que un punto tenga tamaño, solo que su falta de el tamaño es una excusa tonta para no poder dibujarlo. Una línea (como concepto matemático) no tiene ancho, pero podemos dibujarlo bien. Dibujar una "línea de longitud cero" con tapas redondas representa un punto en la pantalla con el diámetro del ancho de línea. Las tapas redondas ofrecen esencialmente un ajuste de "diámetro de punto". Pero, si el póster original busca específicamente establecer el color de un píxel de pantalla, debe hacerse estableciendo los valores directamente en un contexto de mapa de bits y no con las rutinas de dibujo basadas en rutas. – Chad

+0

¡Esto es lo que estaba buscando! CGContextSetLineWidth (desiredWidth); CGContextSetLineCap (UIGraphicsGetCurrentContext(), kCGLineCapRound); Luego dibuja una línea desde el punto a sí mismo. – rmp251

6

¡Dibuja una elipse/círculo muy pequeño y llénalo!

CGContextAddEllipseInRect(Context,(CGRectMake (x_dot, y_dot, 3.0, 3.0)); 
CGContextDrawPath(Context, kCGPathFill); 
CGContextStrokePath(Context); 

Estoy utilizando este código para crear un pequeño punto (3x3 píxeles) en una nota musical punteada.

0

rápida 3: “El argumento de que un punto no tiene tamaño es tonta”

UIRectFill(CGRect(x: x, y: y, width: 1, height: 1)) 
Cuestiones relacionadas