Bu yazıyı yazmadan önce çok
düşündüm, insanlar GDI+`ı asp.net içinde nasıl kullanabilir yada neler
yapabilir? Ki gördüğüm kadarı ile bu konu ile ilgili fazla soru gelmemektedir.
Buda iki anlama gelebilir,
1. Ya her kes bu konuyu çok iyi biliyor !!!
2. Ya da bu konuyu iyi bilmedikleri için GDI`ı fazla
önemsemez oldular.
Bunun için bu GDI+ hakkında ufak bir makale yazma gereği
duydum, umarım size yardımcı olur.
Herkesin bildiği gibi GDI+
asp.net`e özgü bir olay değil ki Windows application da çok fazla
kullanılmaktadır. Bu makalede; GDI+`ın kod doğrulamada nasıl kullanıldığını
anlatacağım. Hepimiz görmüşüzdür, bir e-mail adresi alırken yada bir sayfada
kayıt olurken bizden karmaşık şekilde yazılan birkaç sayıyı yada harfi textbox
içinde doğrulamak için yazmamızı ister, o da otomatik kaydı engellemek için
yapılır. İsterseniz başlayalım, aşağıdaki resmi elde edebilmek
için bu kodu Page_load kısmına yazmanız yeterli olacak ve daha sonra onun üstüne
ilave edeceğiz.
Resim 1
Koda bakalım
private void Page_Load(object sender,
System.EventArgs e)
{
Bitmap bmp; // resmimizi tanımlıyoruz
Graphics gfx; // resmi eklemek için gereken grafik
tanımlamasını yapıyoruz
Font fnt;// kullanacağımız fontu yaratıyoruz.
Random rasgele =new Random(); // ilerde kullanmak üzere bir
rasgele sayı yaratan Random yaratıyoruz
int rndsayi=rasgele.Next(10000,99999);// rasgele sayı için en
küçük ve en büyük değeri yazıyoruz.
bmp=new Bitmap(80,45);// resmimizi(kare) px olarak, enini ve
boyunu tanımlıyoruz.
gfx=Graphics.FromImage(bmp);// resmimizi grafik objenin
içinde yerleştiriyoruz
fnt=new Font("Times New Roman",12);// fontun ismini ve
büyüklüğünü veriyoruz
gfx.DrawString(rndsayi.ToString(), fnt, Brushes.Yellow, 15,
15);// rasgele sayıyı çiziyoruz
bmp.Save(Response.OutputStream, ImageFormat.Gif); //resim
sayfada görünsün diye outputstream kullanıyoruz ve encode
parametrelerini veriyoruz
} |
Şimdi ise tek ihtiyacınız
kullanıcının bu rasgele sayıyı girebileceği bir textbox`u ve girdiği değeri bu
sayı ile karşılaştırarak doğru olup olmadığını doğrulamak ve kaydını yapmaktır. Peki, eğer resim 2 deki gibi
bir resme ihtiyacımız varsa neler yapmalıyız? Onuda bu kodla
Gerçekleştirebiliriz;
Resim 2
Koda bakalım
private void Page_Load(object sender,
System.EventArgs e)
{
Bitmap bmp; // resmimizi tanımlıyoruz
Graphics gfx; // resmi eklemek için gereken grafik
tanımlamasını yapıyoruz
Font fnt;// kullanacağımız fontu yaratıyoruz.
Random rasgele =new Random(); // ilerde kullanmak üzere bir
rasgele sayı yaratan Random yaratıyoruz
int rndsayi=rasgele.Next(10000,99999);// rasgele sayı için en
küçük ve en büyük değeri yazıyoruz.
bmp=new Bitmap(80,45);// resmimizi(kare) px olarak, enini ve
boyunu tanımlıyoruz.
gfx=Graphics.FromImage(bmp);// resmimizi grafik objenin
içinde yerleştiriyoruz
fnt=new Font("Times New Roman",12);// fontun ismini ve
büyüklüğünü veriyoruz
gfx.DrawString(rndsayi.ToString(), fnt, Brushes.Yellow, 15,
15);// rasgele sayıyı çiziyoruz
int rndbirincihat1 = rasgele.Next(0, 45);//birinci hattın
y koordinatlarını veriyoruz
int rndbirincihat2 = rasgele.Next(0, 45);//birinci
hattın y koordinatlarını veriyoruz
gfx.DrawLine(Pens.Yellow, 0, rndbirincihat1, 80,
rndbirincihat2);// birinci hattı çiziyoruz
int rndikincihat1 = rasgele.Next(0, 45);//ikinci hattın
y koordinatlarını veriyoruz
int rndikincihat2 = rasgele.Next(0, 45);//ikinci hattın
y koordinatlarını veriyoruz
//dikkatinizi çekti ise biz hep y koordinatı tanımladık
ya x koordinatı ne olacak?
//x koordinatı karemizin başlangıç ve bitiş
koordinatlarının kendisidir 0 ve 80
gfx.DrawLine(Pens.Yellow, 0, rndikincihat1, 80,
rndikincihat2);//ikinci hattı çiziyoruz
bmp.Save(Response.OutputStream, ImageFormat.Gif); //resim
sayfada görünsün diye outputstream kullanıyoruz ve encode
parametrelerini veriyoruz
} |
Tabi bu kodu kullanarak istediğiniz eklemeyi yapabilirsiniz, bu
sadece hatlar şeklinde değil daireler ya da üçgenler veya aklınıza ne geliyorsa.
Bu size bağlı. Yukarıdaki işlemlere ilave olarak, Resim 3
elde etmek için bu kodu ilave edeceğiz.
Resim 3
Koda bakalım
private void Page_Load(object sender,
System.EventArgs e)
{
Bitmap bmp; // resmimizi tanımlıyoruz
Graphics gfx; // resmi eklemek için gereken grafik
tanımlamasını yapıyoruz
Font fnt;// kullanacağımız fontu yaratıyoruz.
Random rasgele =new Random(); // ilerde kullanmak üzere bir
rasgele sayı yaratan Random yaratıyoruz
int rndsayi=rasgele.Next(10000,99999);// rasgele sayı için en
küçük ve en büyük değeri yazıyoruz.
bmp=new Bitmap(80,45);// resmimizi(kare) px olarak, enini ve
boyunu tanımlıyoruz.
gfx=Graphics.FromImage(bmp);// resmimizi grafik objenin
içinde yerleştiriyoruz
fnt=new Font("Times New Roman",12);// fontun ismini ve
büyüklüğünü veriyoruz
gfx.DrawString(rndsayi.ToString(), fnt, Brushes.Yellow, 15,
15);// rasgele sayıyı çiziyoruz
int rndbirincihat1 = rasgele.Next(0, 45);//birinci hattın y
koordinatlarını veriyoruz
int rndbirincihat2 = rasgele.Next(0, 45);//birinci hattın y
koordinatlarını veriyoruz
gfx.DrawLine(Pens.Yellow, 0, rndbirincihat1, 80,
rndbirincihat2);// birinci hattı çiziyoruz
int rndikincihat1 = rasgele.Next(0, 45);//ikinci hattın y
koordinatlarını veriyoruz
int rndikincihat2 = rasgele.Next(0, 45);//ikinci hattın y
koordinatlarını veriyoruz
//dikkatinizi çekti ise biz hep y koordinatı tanımladık ya x
koordinatı ne olacak?
//x koordinatı karemizin başlangıç ve bitiş koordinatlarının
kendisidir 0 ve 80
gfx.DrawLine(Pens.Yellow, 0, rndikincihat1, 80,
rndikincihat2);//ikinci hattı çiziyoruz
int i; //bir sayı değişkenini tanımlıyoruz
for(i = 0; i <= 50; i++)// bu işlemi 50 defa tekrarlayacaktır
{
int rndX = rasgele.Next(0,
80);//rasgele x koordinatı veriyoruz
int rndY = rasgele.Next(0,
45);//rasgele y koordinatı veriyoruz
bmp.SetPixel(rndX, rndY,
Color.White); // noktalarımızı çiziyoruz
}
bmp.Save(Response.OutputStream, ImageFormat.Gif); //resim
sayfada görünsün diye outputstream kullanıyoruz ve encode
parametrelerini veriyoruz
} |
Benim anlatacaklarım bu kadar, umarım az da olsa yardımcı olabildim.
Not: yabancı olduğum için Türkçemin
kusurunu bağışlayın lütfen :)
Muhanad YOUNIS
[email protected]
*Buradaki bilgiler eğitim amaçlı olup, başka
yerlerde yazarın ismini vererek kullanılabilir.
Kaynaklar :
http://msdn.microsoft.com
http://www.4guysfromrolla.com/
http://www.devasp.net/
Makale:
GDI+ ve Asp.Net C#, Visual C# ve .NET Muhanad YOUNIS
|