merteroglu / Paint-Cpp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Basit Paint Uygulaması - Cpp

Özet

Graphics.h kullanılarak yapılan paintte bulunan çizim araçlarına sahip olan , 16 lı renk seçeneği sunan uygulama.

Code Blocks’a Graphics.h ve libbgi eklenmesi

  1. Codeblocks\Mingw içersindeki

  2. Include klasörü içersine Graphics.h ın atılması

  3. MinGW\Libs klasörüne libbgi.a atılması

Resim 1

Compiler Linker Ayarları

  1. Codeblocks Settings

  2. Compiler Settings

  3. Linker Settings

  4. Add Link libraries

  5. Libbgi.a dosyasını bulup ekliyoruz

  6. Other linker options a alttakini yazıyoruz

  7. -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32

Resim 2

Proje detayları

Resim 6

Kullanım klavuzu

Çizim araçları

Kalem:Mouse sol tık basılarak kullanılır.

Çizgi:Mouse sağ tık basıldığı anda ki koordinattan mouse bırakıldığı anda ki koordinatlar arasında çizgi oluşturur.

Dikdörtgen:Mouse sağ tık basılan noktayı sol üst köşe , bıraktığı noktayı sağ alt köşe olarak kabul eder.Tam tersi durumda gerekli kontroller ile düzgün çizim yapması sağlanmıştır.

Code block
int tmp;

if(lBtnDwnX>mX){ (1)
   tmp = mX;
   mX = lBtnDwnX;
   lBtnDwnX = tmp;
}

if(lBtnDwnY>mY){
    tmp = mY;
    mY = lBtnDwnY;
    lBtnDwnY = tmp;
}
  1. Kontrol Çember:Mouse sağ tık basıldığı anda ki koordinat ile bırakıldığı anda ki koordinatlar arasında ki mesafenin yarısını çemberin yarıçapı olarak alır.İki noktanın ortası noktasını çember merkezi kabul eder.Uzaklığı hesaplamak için kullanılan formül:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> <mi>uzaklik</mi> <mo>=</mo> <mrow> <msqrt> <msup> <mi>(x2-x1)</mi> <mn>2</mn> </msup> <mn>+</mn> <msup> <mi>(y2-y1)</mi> <mn>2</mn> </msup> </msqrt> </mrow> </math>

Code block
            double lenght = sqrt(pow(mX-lBtnDwnX,2)+pow(mY-lBtnDwnY,2));

            if(((mY+lBtnDwnY)/2-lenght/2)<=Screen_hight/10){
                 circle((mX+lBtnDwnX)/2,Screen_hight/10+lenght/2,lenght/2);
            }else{
                 circle((mX+lBtnDwnX)/2,(mY+lBtnDwnY)/2,lenght/2);
            }

Üçgen:Mouse sağ tık basıldığı anda ki nokta ile bırakıldığı anda ki noktalar arasında ki uzaklığın yarısını alıp, iki noktanın orta noktasını üçgenin G noktası kabul edip,G noktasından köşelere olan uzaklığı ilk hesaplanan değeri alır.

Code blocks
 double lenght = sqrt(pow(mX-lBtnDwnX,2)+pow(mY-lBtnDwnY,2));
 double middlePx = (mX+lBtnDwnX)/2;
 double middlePy = (mY+lBtnDwnY)/2;

line(middlePx-lenght/2,middlePy+lenght/2,middlePx,middlePy-lenght/2);
line(middlePx,middlePy-lenght/2,middlePx+lenght/2,middlePy+lenght/2);
line(middlePx-lenght/2,middlePy+lenght/2,middlePx+lenght/2,middlePy+lenght/2);

Proje detayları

Kullanılan kütüphaneler

  • graphics.h : Pencere oluşturma,Çizim yapma gibi temel gereksinimleri karşıladığımız kütüphane. Graphics.h Fonksiyonlarına buradan ulaşabilirsiniz.

  • windows.h : Windows’dan ekran çözünürlüğünü almak için kullandığımız kütüphane.

  • math.h : Çizimleri yaparken gerekli matematiksel hesaplamaları yapmak için kullandığımız kütüphane.

Kullanılan fonksiyonlar ve açıklamaları

  • GetSystemMetrics : Sistemden max X ve Y değerini almak için kullandığımız Windows.h da bulunan fonksiyon.

  • initwindow : Pencere oluşturmak için kullandığımız fonksiyon. Parametre olarak Pencere genişliği yüksekliği ve pencere başlığını almaktadır.

  • Setactivepage : Aktif pencereyi değiştiren fonksiyon. Parametre olarak pencere index numarası almaktadır.

  • Setbkcolor : Pencerenin arka planını değiştiren fonksiyon. Parametre olarak renk kodlarını almaktadır.

  • Setcolor : Yapılacak olan çizimlerin rengini değiştiren fonksiyon. Parametre olarak renk kodlarını almaktadır.

  • Bar :Buton görünümü oluşturmak için kullandığımız fonksiyon. Parametre olarak başlangıç x ve y , bitiş x ve y koordinatlarını almaktadır.

  • Outtextxy : Belirlenen x ve y değerine yazı yazdırmak için kullandığımız fonksiyon. Parametre olarak x ve y ve string almaktadır.

  • Setfillstyle : İçerisine aldığı parametrenin rengini değiştiren fonksiyon. Parametre olarak patern index i ve renk kodunu almaktadır.

  • Readimagefile : Dosyadan resim okuyup istediğimiz x ve y değerleri arasına bu resmi yerleştirebilen fonksiyon. Parametre olarak okunacak dosya yolunu ve yerleştirilcek x y aralığını almaktadır.

  • Writeimagefile : Çizim aralığımızı gönderip bu aralığı istenilen yere .bmp formatında kayıt edebilen fonksiyon. Parametre olarak kayıt edilecek dosya yolunu ve resim boyutunu almaktadır.

  • Getmouseclick : Fare’nin tıklanış biçimine göre tıklanan yerin x ve y değerini aldığımız fonksiyon. Parametre olarak fare tıklama tipini ve tıklanan yerin x ve y değerini döndüreceği değişkenleri almaktadır.

  • Clearmouseclick : Fare tıklamalarını hafızadan temizleyen diğer tıklamalarında okunabilmesini sağlayan fonksiyon. Parametre olarak hafızadan temizlenmesi istenilen tıklama türünü almaktadır.

  • GetCursorPos:Fare x ve y sini Point tipindeki değişkene döndüren Windows.h fonksiyonu. Parametre olarak Point tipindeki değişkenin adresini almaktadır.

  • ismouseclick : Fare’nin tıklanıp tıklanmadığını kontrol eden fonksiyon. Parametre olarak fare tıklama tipini almaktadır.

  • Rectangle : Dörtgen çizdirmek için kullandığımız fonksiyon. Paremetre olarak dörtgenin sol ve sağ x değerini , tepe ve dip y değerini almaktadır.

  • Sqrt : Kök alan math.h fonksiyonu.Parametre olarak double tipinde değişken alıp bu değişkenin kökünü yine double tipinde döndürür.

  • Pow : Üst almak için kullanılan math.h fonksiyonu.Parametre olarak double üstü alınacak değer ve üs değerini almaktadır.Dönüş değeri yine doubledır.

  • Circle: Çember çizmek için kullanılan fonksiyon. Parametre olarak çemberin merkez noktasını ve yarıçapını almaktadır.

  • Line : Çizgi çizmemizi sağlayan fonksiyon. Parametre olarak başlangıç ve bitiş x y koordinatlarını almaktadır.

  • MoveTo: Fare x ve y nin en son hafızada tutulan değerini değiştirmeye yarayan fonksiyon. Parametre olarak x ve y değeri almaktadır.

  • LineTo:En son tıklamanın çizimin yapıldığı yerden yeni tıklanan yere bağlanan çizgi çeken fonksiyon. Parametre olarak çizgi çekilcek noktanın x ve y değerini almaktadır.

About


Languages

Language:C++ 100.0%