¿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
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.
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.
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í.
- 1. ¿Debo crear nuevas Plumas/Pinceles por solicitud de pintura o mantenerlas durante todo el ciclo de vida de la aplicación?
- 2. Directrices para Dispose() y Ninject
- 3. Directrices para escribir un marco
- 4. Directrices para el almacenamiento de datos de iOS Rechazo
- 5. Directrices para una clase Iterator
- 6. Directrices para diseñar Clean Interface
- 7. Directrices para usar los complementos de jQuery y sus dependencias
- 8. Directrices para el servicio de boletín informativo por correo electrónico
- 9. Directrices para usar Assert versus Verify
- 10. Directrices para viewWillAppear, viewDidAppear, viewWillDisappear, viewDidDisappear
- 11. Directrices para diseñar clases para la inyección de dependencia
- 12. Directrices de diseño Computación distribuida
- 13. ¿Se obtienen muchas imágenes repetidas de mayor o menor rendimiento que el uso de pinceles en WPF?
- 14. ¿Hay alguna diferencia en el uso de Context.getText y Context.getResources.getText?
- 15. C# Codificación Directrices
- 16. directrices de diseño de Windows y Visual Studio
- 17. Directrices para probar el código multiproceso o asegurarse de que el código sea seguro para subprocesos
- 18. ASP.Net MVC url diseño y directrices de estructura
- 19. Directrices para una mejor unidad de pruebas de
- 20. Directrices para escribir código rápido para PyPy's JIT
- 21. directrices de codificación c objetivas
- 22. Directrices de estilo para variables globales en F #
- 23. Programación defensiva: Directrices en Java
- 24. Directrices de IU de derecha a izquierda?
- 25. ¿Qué directrices se adhieren para escribir buenas sentencias de registro
- 26. Directrices de nomenclatura de WCF/Mejores prácticas
- 27. buenas directrices sobre nombrar propiedades bool
- 28. Directrices de diseño sin esquema para Google App Engine Datastore y otras bases de datos NoSQL
- 29. Los pinceles del sistema Metro Theme no cambian
- 30. ¿Cómo obtener Pinceles del Diccionario de recursos y aplicarlo a un elemento dinámicamente en wpf?