msHOWTO

12 Nisan 2012 Perşembe

C# GDI ile Resim İşleme

Merhaba arkadaşlar. Bu makalemde yapacağım örneği aslına bir çok kez görmüşsünüzdür. Mesela internette dolaşıyorsunuz.Ve süper bir resim gördünüz.O resmi indirmek istediniz.İndirdiniz açıyorsunuz veee bir bakıyorsunuz ki resmin bir yerinde reklam yazısı filan görüyorsunuz.Ne kadar sinir bozucu bir durum değil mi ? Bence de fakat işte şimdi tam bu işlemi yapan uygulama yapacağız. :) Biraz da biz başkalarını sinir edelim değil mi ? Daha iyimser bir örnek verecek olursak diyelim ki e-ticaret sitesi yaptınız ve sadece size ait ürünler var.Bu ürünleri koymak istiyorsunuz.Fakat çalınacak diye korkuyorsunuz.Kendi logonuzu yada web sitenizin adresini resme işlemek istiyorsunuz.Bir resim için kolay bir durum ama diyelim ki yüzlerce resminiz var.Eee her resim için aynı işlemleri mi yapacaksınız.Tabi ki hayır.Birlikte yapacağımız uygulama ile bu işlemi Gdi kullanarak tek bir tuşla halledeceksiniz. Gelelim uygulamayı yapmaya ...

Formun tasarımı için bir tane picturebox,bir adet openfiledialog ve 2 adet button ekleyin.Butonların birinin text ine Gözat diğerine ise İmzala girin.Gelelim kodlama işlemine...

Aşağıdaki kütüphaneleri kod sayfanızın en üstüne yazın (kod sayfasına geçmenin bir diğer yolu de tasarım anında iken F7 tuşuna basmaktır.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;


Daha sonra aşağıdaki değişkenleri global olarak tanımlayın..


string dosyaYolu = string.Empty;
        Bitmap bmp = null;


Gözat butonuna aşağıdaki kodları yazın ...


if (openFileDialogDosyaAc.ShowDialog() == DialogResult.OK)
            {
                dosyaYolu = openFileDialogDosyaAc.FileName;

                //bir bitmap nesnesi oluşturulur ve seçilen resim bu nesneye yüklenir.  

                bmp = new Bitmap(dosyaYolu);

                pictureBox1.Image = bmp;
  
              //picturebox nesnesinin sizemode özelliği strech olarak ayarlanır.Bunun //sebebi ise seçilen resmin picturebox nesnesinde tam olarak gözükmesini sağlamaktır.

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }

Ve geldik en önemli kısma ... İmzala buttonuna aşağıdaki kodları yazın ...


bmp = pictureBox1.Image.Clone() as Bitmap; // picturebox da hangi resim yukluyse onu clone lar.

            Graphics g = Graphics.FromImage(bmp);
            string imza = "Koray Düzgün";
            Font f = new Font("Arial", 40,FontStyle.Bold|FontStyle.Italic);// araya seperatör koyarak birden fazla style verebiliriz.
            int x = (pictureBox1.Width / 2) - (Convert.ToInt32(f.Size*imza.Length) /2);
            int y = (pictureBox1.Height / 2) - (f.Height / 2);
           
            g.DrawString(imza, f, Brushes.Gold, new Point(x, y));// bu kısımda imza string değeri resmin tam ortasına çizilir.x ve y noktalarının değerleri değiştirilerek istenilen noktaya işlemi yapabilirsiniz.
           
            pictureBox1.Image = bmp;
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
  


Bir sonraki makalemde görüşmek dileğiyle ...

Hiç yorum yok:

Yorum Gönder