24 Kasım 2007 Cumartesi

C# ile resim Pasifleştirmek

Bazen araçkutuların daki Düğmelerin (buttonların) pasif kullanılamaz olduğunu görürüz. Diğer buttonlardaki resimler renkli iken bu pasif olan buttonlardaki resimlerde aynı buttonlar gibi pasif yani renksiz görünürler. İşte şimdi Bu butonların üstündeki pasif renksiz resimlerin C# ile nasıl yapıldığını bir Method ile göstermek istiyorum.

Method 'muz renkli resmi alarak geriye renksiz yani Pasif resim döndürecektir.

//ilk önce aşagıdaki namespaces leri class'ımıza ekliyoruz.
using System.Drawing;
using System.Drawing.Imaging;


//Daha sonra methodumuza geçiyoruz methodumuz aşağıda görüldüğü gibi
//1 parametre alarak geriye bir resim döndürüyor
public Image CerateDisabledImage(Image image)
{

//İlk önce imageAttributes türetiyoruz.
ImageAttributes ia = new ImageAttributes();
//Daha sonra bitane bitmap nesnesi türetiyoruz ki bu bitmap'i image olarak geri döndürebilelim
Bitmap bmp = new Bitmap(image.Width, image.Height);
//Şimdi graphics nesnesi türeterek daha önce türettiğimiz bmp nesnesinin
//üzerinde işlemyapacağını bildirelim
Graphics gr = Graphics.FromImage(bmp);
//Daha sonra ColorMatrix türeterek Resmi pasifleştirecek değerleri türetelim
ColorMatrix cm = new ColorMatrix(new float[][]{ new float[]{0.5f,0.5f,0.5f,0,0},
new float[]{0.1f,0.1f,0.1f,0,0},
new float[]{0.5f,0.5f,0.5f,0,0},
new float[]{0,0,0,1,0,0},
new float[]{0,0,0,0,1,0},
new float[]{0,0,0,0,0,1}});

//Dahasonra Türettiğimiz imageAttribute' Colormatrixleri Set edelim
//ve bitmap üzerinde işlem yamasını istediğimiz graphics nesnesi ile paremetre olarak aldığımız resmi çizdirelim
ia.SetColorMatrix(cm);
gr.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, ia);

//Son olarak graphics nesnemizi yok ederek oluşturduğumuz pasif resmi geri döndürelim
gr.Dispose();
return bmp;
}

Hiç yorum yok: