2012-06-22 10 views
5

Estoy tratando de usar un icono que he agregado como recurso como la imagen en un botón. Sé que es posible porque puedo hacerlo en otros proyectos a través del diseñador. Sin embargo, estoy tratando de hacer esto con el código. Agregué el icono como un recurso a mi proyecto siguiendo los pasos en la respuesta aceptada al this question. El recurso se llama CancelButtonIcon.¿Cómo echo un icono de un archivo de recursos a una imagen para usar en un botón?

Ahora, estoy tratando de añadir que como icono de la imagen de un botón de serie con este código:

this.CancelButton.Image = (System.Drawing.Image)Properties.Resources.CancelButtonIcon; 

Sin embargo, me sale un mensaje de error:

Cannot convert type 'System.Drawing.Icon' to 'System.Drawing.Image' 

En el código que Visual Studio genera automáticamente cuando uso el diseñador, se ve así:

((System.Drawing.Image)(resources.GetObject("SaveButton.Image"))); 

que resultados de agregar manualmente un recurso a través de la ventana Propiedades. ¿Cómo puedo convertir este recurso de icono en una imagen para que pueda usarse en el botón? Agregarlo a través del diseñador no es una opción (este botón se crea mediante programación y, por lo tanto, no está presente en el diseñador).

Respuesta

8

Puede utilizar el método Icon.ToBitmap para este fin. Tenga en cuenta que un Bitmap es un Image.

CancelButton.Image = Properties.Resources.CancelButtonIcon.ToBitmap(); 
+0

Perfecto e instantáneo. Una vez que el límite de tiempo pase, lo aceptaré. –

+0

En realidad, la implementación de esto me hace notar algo, sin embargo. Cuando agrego íconos a los botones en el diseñador, se escalan automáticamente para que se ajusten al botón. Esto no ocurre cuando uso su código, por lo que los iconos son * mucho * más grandes que los botones. –

+0

Si desea escalar, use 'nuevo mapa de bits (Properties.Resources.CancelButtonIcon.ToBitmap(), CancelButton.Size)' – Ani

0

No sé por qué, pero cada vez he intentado usar el enfoque de la respuesta aceptada, la llamada .ToBitmap() me estaba dando índice de matriz fuera de límites excepciones. Lo resolví de esta manera:

System.Drawing.Icon.FromHandle(Properties.Resources.CancelButtonIcon.Handle).ToBitmap(); 
Cuestiones relacionadas