4 Temmuz 2013 Perşembe

GDI+ ve Asp.Net

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.
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;

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.

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
}



Hiç yorum yok:

Yorum Gönder