|
GDI+ ile Resim Görüntüleme(C++.NET) |
|
Gönderiliyor lütfen bekleyin... |
|
|
Bu makalede size, Gdi+ kütüphanesini kullanarak herhangi bir
formattaki resmin nasıl görüntüleneceğini göstermeye çalışacağım.Uygulamaya
geçmeden önce Gdi+ kütüphanesinin işimize yarayacak sınıflarından ve
fonksiyonlarından bahsetmek istiyorum.
Gdi+ kütüphanesini kullanarak bir resmi görüntülemek için iki tane
sınıf kullanabilirsiniz. Bunlar
Image
ve
Bitmap sınıflarıdır.Image
ve Bitmap sınıflarının arasındaki
fark ise Bitmap sınıfının
işlevinin daha fazla, yani sınıfın kullanım alanının
daha geniş olmasıdır.Aşağıdaki örnekte Image
sınıfı kullanılarak jpg formatındaki bir resim dosyasının nasıl görüntülenebileceğini görebilirsiniz.
Image image("resim.jpg");
graphics.DrawImage(&image, 20, 10);
|
Burada görüldüğü gibi Image sınıfı jpg formatı gibi, birçok resim
formatını tanır. DrawImage
ve
Image
sınıfının yapıcı fonsiyonunun prototipi şu şekildedir:
//DrawImage fonksiyonu
Status DrawImage( Image *image,
INT x,
INT y
);
//Image sınıfının yapıcı fonksiyonu
Image( const WCHAR *filename,
BOOL useEmbeddedColorManagement
);
|
Birinci parametrede
Image
sınıfından türetmiş olduğumuz nesnenin adresini, ikinci ve üçüncü parametrede
ise resmin çizilmeye başlanacağı koordinatları istemektedir.
Aşağıdaki örnekte de Bitmap
sınıfı kullanarak resource da tanımlanmış bir ikonun nasıl okutulacağını
görebilirsiniz.
HICON hIcon = LoadIcon(NULL, IDI_ZEK);
Bitmap bitmap(hIcon);
graphics.DrawImage(&bitmap, 0, 0);
|
Şimdi küçük uygulamamıza geçebiliriz.
Uygulamamız yukarıdaki şekilde görüldüğü gibi olacaktır. Ac butonuna
basıldığında dialog açılacak ve seçtiğmiz resim
PictureBox
ta görüntülenecektir. Ayrıca picturebox boyutları, resmin boyutlarına göre
ayarlanacaktır. Uygulamamızı yazmaya başlayalım.
İlk olarak dialog tabanlı bir mfc projesi oluşturuyoruz. Sonra geçen
makalede bahsettiğimiz
(www.csharpnedir.com
) Gdi+ kütüphanesini kullanmak için gerekli olan adımları yapıyoruz.
Projeyi oluşturduktan sonra dialoğumuza bir picture kontrolü
ekliyoruz ve bir ID değeri veriyoruz. Bu kontrole bağlı
CStatic
sınıfından m_resim isminde bi nesne türettikten sonra, seçtiğimiz
dosyanın ismini tutmak için
CString
sınıfından
m_DosyaIsmi adında bir nesne oluşturuyoruz
Şimdi kodumuzu yazalım. Bunun için Aç ismini verdiğimiz buttonun
click mesajı içerisine şu kodları yazıyoruz:
//OnBnClickedAc fonksiyonu içi
CString strFilter = "Resim Dosyaları (bmp.gif.jpg)|*.bmp;gif;jpg|BMP
(*.bmp)|*.bmp|GIF (*.gif)|*.gif|JPG (*.jpg)|*.jpg|Tüm Dosyalar (*.*)|*.*||";
CFileDialog OpenFileDialog(TRUE, NULL, NULL, OFN_HIDEREADONLY , strFilter);
if(OpenFileDialog.DoModal() == IDOK)
{
m_DosyaIsmi=OpenFileDialog.GetFileName();
Image bm(m_DosyaIsmi.AllocSysString());
m_resim.MoveWindow(0,0,bm.GetWidth(),bm.GetHeight());
}
|
Burada açacağımız resmi seçmek için CFileDialog
sınıfından bir nesne türetiyoruz ve bu açılan dosyanın ismini
m_DosyaIsmi
isimli değişkenimize aktarıyoruz. Sonrada
Image
sınıfından nesnemizi oluşturup dosyayı açıyoruz, genişlik ve yükseklik
değerlerine göre kontrolümüzün boyutlarını belirliyoruz. Ayrıca dialog her
hareket ettirildiğinde tüm çizim sıfırlanacağı için, çizim işlemini
Paint
mesajı içerisinde yapıyoruz. Şimdi aşağıdaki kodu paint mesajı içerisine
ekleyelim:
//OnPaint mesajı
if(!m_DosyaIsmi.IsEmpty())
{
CDC* dc=m_resim.GetDC();
Graphics grp(dc->m_hDC);
Image bm(m_DosyaIsmi.AllocSysString());
grp.DrawImage(&bm,0,0);
}
|
Burada dosyadan bir resim açıp açmadığımızı kontrol ediyoruz,
açılmışsa kontrolün üzerine çizim yapmak için
GetDC()
fonksiyonu ile dc değerini alıyoruz ve resmimizi kontrolün üstüne çiziyoruz.
Bu örneğimizin de sonuna geldik. SİZE İYİ ÇALIŞMALAR....
Örnek uygulama projesini indirmek
için tıklayın.
Zeki Yuğnak
Erciyes Üniversitesi
Elektronik Mühendisliği
Makale:
GDI+ ile Resim Görüntüleme(C++.NET) C++ ve C++.NET dili Zeki Yuğnak
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|