2009-01-07 10 views
7

¿Qué tan caro es crear pinceles y bolígrafos gdi? ¿Debo crearlos en un complemento necesario y envolverlos en un uso para que se eliminen rápidamente, o debería crear una clase estática similar a la clase System.Drawing.Brushes?Directrices para el uso de pinceles y plumas

Respuesta

5

IMO, son lo suficientemente eficientes como para no crear instancias de larga duración que se utilizan en varias llamadas a métodos, pero son lo suficientemente ineficaces como para crear cada una una vez dentro de un método particular, en lugar de crear una nueva uno cada vez que necesita dibujar algo.

En otras palabras, no almacene un pincel personalizado en su clase que utilice para pintar el texto en cada llamada OnPaint, pero tampoco cree un pincel nuevo para cada línea de texto que dibuje dentro de esa llamada OnPaint , ya sea.

2

He encontrado excepciones al intentar dibujar imágenes personalizadas en una aplicación web cargada con un pincel estático.

No conozco los motivos técnicos, pero creo que los Pinceles y Bolígrafos no son seguros para subprocesos, así que los crearía según sea necesario de forma segura para hilos y desecharlos dentro de ese ámbito, probablemente con un utilizando.

1

Para nuestra GUI configurable pensamos que trataríamos de ponerlos en un "uso" (volver a crear cuando sea necesario) al dibujar nuestros controles y pensamos que optimizaríamos si fuera necesario.

No ha sido necesario.

Esto es WinForm en WinCE que generalmente es bueno para mostrar cosas que pueden ser lentas en el escritorio (la reflexión es mucho más cara en WinCE por ejemplo) así que a menos que estés haciendo una manipulación de imágenes loca en el escritorio Mucho perf entonces creo que deberías estar bien crearlos cuando sea necesario.

IIRC utilizando los pinceles. la recopilación en el GDI podría ser una opción, ya que esto garantiza que se almacenen en caché y se eliminen al final, aunque no estoy seguro de la seguridad de los hilos allí.

Cuestiones relacionadas