2012-06-22 9 views
5

Ben bir düğmeye görüntü olarak bir kaynak olarak eklediğiniz bir simge kullanmaya çalışıyorum. Bunun mümkün olduğunu biliyorum çünkü bunu tasarımcı aracılığıyla diğer projelerde yapabilirim. Ancak, bunu kod ile yapmaya çalışıyorum. Simgeyi, this question kabul edilen yanıttaki adımları izleyerek projeme kaynak olarak ekledim. Kaynak CancelButtonIcon olarak adlandırılmıştır.Bir kaynak dosyadan simgeyi bir düğmede kullanmak üzere nasıl görüntüleyebilirim?

Şimdi, bu kod ile standart bir düğmeye görüntü olarak o simge eklemek çalışıyorum: kodunda

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

: Ancak

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

, bir hata mesajı alıyorum Visual Studio, tasarımcıyı kullandığımda otomatik olarak oluşturur, şu şekilde görünür:

Özellikler penceresine el ile kaynak ekleyerek sonuçları. Bu simge kaynağını bir görüntüye nasıl dönüştürebilirim, böylece düğmede kullanılabilir mi? Onu tasarımcıya eklemek bir seçenek değildir (bu düğme programlı olarak oluşturulur ve dolayısıyla tasarımcıda mevcut değildir).

cevap

8

Bu amaçla Icon.ToBitmap yöntemi kullanabilirsiniz. Bitmap'un Image olduğunu unutmayın.

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

Kusursuz ve anlık. Zaman sınırı geçtikten sonra bunu kabul edeceğim. –

+0

Aslında bunu uygulamak benim için bir şey fark etmemi sağlıyor. Simgeleri, tasarımcının düğmelerine eklediğimde, otomatik olarak ölçeklendirilirler, böylece düğmeye otururlar. Bu, kodunuzu kullandığımda olmaz, bu yüzden simgeler, düğmelerden * çok daha büyüktür. –

+0

Ölçeklendirmek istiyorsanız, yeni Bitmap (Properties.Resources.CancelButtonIcon.ToBitmap(), CancelButton.Size) ' – Ani

0

neden emin değilim ama ben kabul cevabım yaklaşım kullanmayı denediler her zaman, .ToBitmap() çağrısı sınırları istisnalar dışında bana dizi dizinini veriyordu değil. Bunun yerine şu şekilde çözdüm:

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