コード例 #1
0
 private void pbCizimAlani_MouseDown(object sender, MouseEventArgs e)
 {
     if (seciliKatman == null)
     {
         return;                                //formda seçili bir katman yoksa derhal çýk
     }
     if (anaForm.AracKutusu.SeciliArac.Tip == AracTipi.Tasima)
     {                   //taþýmayla alakalý iþlemler
         if (e.Button == MouseButtons.Left)
         {               //taþýma olayý baþlat
             if (seciliKatman != null)
             {
                 if (seciliKatman.SeciliSekil != null)
                 {
                     tasima = new TasimaOlayi(this, seciliKatman.SeciliSekil, new Nokta(e.X, e.Y));
                 }
             }
         }
         else if (e.Button == MouseButtons.Right && tasima != null)
         {                       //taþýma olayýný iptal et
             tasima.IptalEt();
             tasima = null;
         }
     }
     else if (anaForm.AracKutusu.SeciliArac.Tip == AracTipi.Secme && e.Button == MouseButtons.Left)
     {
         //týklanan yere göre herhangi bir þekilin seçilmesi gerekiyor mu
         Sekil secilenSekil = sekilSecimKontrolu(gercekNokta(new Nokta(e.X, e.Y)));
         if (secilenSekil != null)
         {
             //eðer zaten seçili deðilse týklanan þekili seç
             if (!secilenSekil.Equals(seciliKatman.SeciliSekil))
             {
                 anaForm.SekilSec(seciliKatman.sekiller.IndexOf(secilenSekil));
             }
             //ayný anda taþýma olayý da baþlat
             anaForm.AracKutusu.AracDegistir(AracTipi.Tasima);
             tasima = new TasimaOlayi(this, seciliKatman.SeciliSekil, new Nokta(e.X, e.Y));
             tasima.TasimaSonrasi = AracTipi.Secme;
         }
     }
     else
     {               //þekil çizimi ile alakalý
         if (e.Button == MouseButtons.Left)
         {           //çizime bir nokta daha ekle
             if (cizim != null)
             {
                 cizim.NoktaEkle(gercekNokta(new Nokta(e.X, e.Y)));
             }
         }
         else if (e.Button == MouseButtons.Right && cizim != null)
         {                 //halen çizim aþamasýndaki çizimi iptal et
             cizim.IptalEt();
         }
     }
 }
コード例 #2
0
 //yeni bir þekil çizimi tamamlandýktan hemen sonra çalýþýr ve genel olarak ekraný günceller
 private void cizim_SekilCizimiTamamlandi(Sekil yeniSekil)
 {
     yeniSekil.cizgiRengi = anaForm.CizimRengiSecimi.Color; // Þeklin rengini ayarla
     seciliKatman.sekiller.Add(yeniSekil);                  // Þekli seçili katmana ekle
     seciliKatman.SeciliSekil = yeniSekil;                  // yeni þekil seçili þekil olsun
     anaForm.ListeleriGuncelle();                           //Katman ve þekil listelerini güncelle
     GoruntuyuGuncelle();                                   // Çizim formunu güncelle
     //Geri alma iþlemi için bu çizim iþlemini yýðýna at
     YeniDegisiklikEkle(new CizimDegisikligi(seciliKatman, yeniSekil));
 }
コード例 #3
0
        //Noktalar kuyruðuna bir nokta ekle
        public void NoktaEkle(Nokta yeniNokta) //yeniNokta: santim tipinde
        {
            if (noktalar.Count == 0)           //eðer hiç nokta yoksa ilk noktayý sakla
            {
                noktalar.Enqueue(yeniNokta);
                //çizim formunun ilk andaki görüntüsünü sakla
                ilkGoruntu = cizimFormu.CizimAlaniGoruntusuVer(null, true);
            }
            else                                             //en az bir nokta varsa þeklin tipine göre karar ver
            {
                Nokta ilkNokta  = (Nokta)noktalar.Dequeue(); //birinci noktayý kuyruktan al
                Sekil yeniSekil = null;
                switch (tip)
                {
                case CizimTipi.Dogru:                                                    //seçili katmana bir doðru ekle
                    yeniSekil      = new Dogru(ilkNokta.Kopyasi(), yeniNokta.Kopyasi()); //yeni bir doðru oluþtur
                    yeniSekil.isim = "yeni doðru";
                    break;

                case CizimTipi.Dikdortgen:                         //seçili katmana bir dikdörtgen ekle
                    yeniSekil      = Dikdortgen.KuralliDikdortgen(ilkNokta, yeniNokta);
                    yeniSekil.isim = "yeni dikdörtgen";
                    break;

                case CizimTipi.Cember:                         //seçili katmana bir çember ekle
                    yeniSekil      = new Cember(ilkNokta.Kopyasi(), ilkNokta.Uzaklik(yeniNokta));
                    yeniSekil.isim = "yeni çember";
                    break;

                case CizimTipi.Elips:                         //seçili katmana bir Elips ekle
                    yeniSekil      = Elips.KuralliElips(ilkNokta, yeniNokta);
                    yeniSekil.isim = "yeni elips";
                    break;

                case CizimTipi.DogruSerisi:
                    //seçili katmana bir doðru ekle ve diðer doðrunun
                    //baþlangýç noktasýný bunun bitiþ noktasý yap
                    yeniSekil      = new Dogru(ilkNokta.Kopyasi(), yeniNokta.Kopyasi());                        //yeni bir doðru oluþtur
                    yeniSekil.isim = "yeni doðru";
                    SekilCizimiTamamlandi(yeniSekil);
                    yeniSekil = null;
                    NoktaEkle(yeniNokta);                             // yeni nokta sonraki doðrunun ilk noktasý
                    break;

                default:
                    break;
                }
                //çizimin tamamlandýðýný belirten olay tetikleniyor
                if (yeniSekil != null)
                {
                    SekilCizimiTamamlandi(yeniSekil);
                }
            }
        }
コード例 #4
0
 public AracTipi TasimaSonrasi = AracTipi.Tasima; // taþýma bitince hangi araç seçilsin
 //Kurucu fonksyon
 public TasimaOlayi(frmCizim cizimFormu, Sekil tasinanSekil, Nokta ilkNokta)
 {
     this.cizimFormu   = cizimFormu;
     this.tasinanSekil = tasinanSekil;
     //çizim formunun ilk andaki görüntüsünü (taþýnan þekil hariç) sakla
     ilkGoruntu = cizimFormu.CizimAlaniGoruntusuVer(tasinanSekil, true);
     //þeklin baþlangýçtaki noktasýný sakla
     baslangicNoktasi = tasinanSekil.DikdortgenselKoordinat().solUstKose;
     //mouse'un koordinatlarýný sakla
     simdikiNokta = ilkNokta;
 }
コード例 #5
0
        //Ekrandaki görüntüyü güncellemek için
        //bu fonksyonda önce ilk saklanan görüntü çizilir sonra üzerine verilen þekil çizilir
        private void goruntuGuncelle(Sekil cizilenSekil)
        {
            //ilk görüntüyü kopyala
            Bitmap goruntu = (Bitmap)ilkGoruntu.Clone();

            if (cizilenSekil != null)
            {
                //çizim yapabilmek için grafik nesnesi oluþturuluyor
                Graphics grafik = Graphics.FromImage(goruntu);
                //verilen þekli saklanan görüntünün üstüne çiz
                cizilenSekil.Ciz(cizimFormu, grafik, true);
            }
            //oluþturulan görüntüyü picturebox'da göster
            cizimFormu.Goruntu = goruntu;
        }
コード例 #6
0
 public frmSekilOzellikleri(frmAna anaForm, Sekil sekil)
 {
     this.anaForm = anaForm;
     this.sekil   = sekil;
     InitializeComponent();
 }
コード例 #7
0
 //kurucu fonksyon
 public TasimaDegisikligi(Sekil tasinanSekil, float yatayMiktar, float dikeyMiktar)
 {
     this.tasinanSekil = tasinanSekil;
     this.yatayMiktar  = yatayMiktar;
     this.dikeyMiktar  = dikeyMiktar;
 }
コード例 #8
0
 //kurucu fonksyon
 public CizimDegisikligi(Katman cizilenKatman, Sekil cizilenSekil)
 {
     this.cizilenKatman = cizilenKatman;
     this.cizilenSekil  = cizilenSekil;
 }