Pregunta

La documentación de MSDN es (algo ) claro sobre los siguientes dos hechos sobre las plumas GDI:

  1. Una pluma cosmética (crear a través de CreatePen o ExtCreatePen con PS_COSMETIC) debe tener 1 unidad de ancho (bueno, < = 1, pero no vayamos allí).

  2. Una pluma geométrica (ExtCreatePen w / PS_GEOMETRIC) debe estar sólida (solo PS_SOLID, no PS_DASH, etc.). Sin embargo, pueden dibujar líneas más gruesas. Esto está claramente documentado en el enlace que puse arriba como solo una restricción de 9x (soy tonto). En mi defensa, los comentarios (malos) y la lógica (rota) en mi código me llevaron a creer lo contrario. Algunos otros artículos en Google deben haber sido escritos considerando solo Windows 9x.

¿Por qué puedo anular estas reglas y hacer que GDI dibuje felizmente con estos Bolígrafos?

Puedo crear plumas cosméticas gruesas (ancho = 10, por ejemplo) y plumas geométricas discontinuas. ¡Diablos, puedo crear una pluma geométrica gruesa y discontinua!

Estas plumas parecen funcionar bien generalmente . El único problema que he visto está en la polilínea cuando paso conjuntos de puntos muy grandes: representa las líneas muy lentamente. Sin embargo, Polyline está actuando de manera extraña con grandes matrices en general: simplemente actúa de manera diferente con los bolígrafos bad . (mis otros problemas de polilínea pueden ser otra pregunta ...)

¿Es seguro usar bolígrafos cosméticos anchos o geométricos anchos con patrones?

¿Fue útil?

Solución

En general, debe adherirse a la API documentada, de lo contrario corre el riesgo de confiar en el comportamiento específico de la versión del sistema operativo.

Las restricciones de ExtCreatePen que usted describe (p. ej., no PS_DASH con PS_GEOMETRIC) solo se aplican a Win9x, no a WinNT, así que en NT / 2000 / XP su " pluma geométrica gruesa y discontinua quot; No debería ser un problema. También tenga en cuenta que Polyline tiene algunas limitaciones en Win9x.

Si desea líneas punteadas, le sugiero que use PS_USERSTYLE para controlar las longitudes de los guiones y espacios, en lugar de depender de cualquier valor predeterminado que le dé <=>.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top