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(); } } }
//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)); }
//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); } } }
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; }
//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; }
public frmSekilOzellikleri(frmAna anaForm, Sekil sekil) { this.anaForm = anaForm; this.sekil = sekil; InitializeComponent(); }
//kurucu fonksyon public TasimaDegisikligi(Sekil tasinanSekil, float yatayMiktar, float dikeyMiktar) { this.tasinanSekil = tasinanSekil; this.yatayMiktar = yatayMiktar; this.dikeyMiktar = dikeyMiktar; }
//kurucu fonksyon public CizimDegisikligi(Katman cizilenKatman, Sekil cizilenSekil) { this.cizilenKatman = cizilenKatman; this.cizilenSekil = cizilenSekil; }