예제 #1
0
        //aktif olarak çizilen þeklin önizlemesini görmek için
        public void NoktaEkleOnizleme(Nokta yeniNokta)   //yeniNokta: santim tipinde
        {
            if (noktalar.Count > 0)                      //en az bir nokta varsa devam et
            {
                Nokta ilkNokta = (Nokta)noktalar.Peek(); //birinci noktayý kuyruktan bul
                Sekil sekil    = null;
                switch (tip)
                {
                case CizimTipi.Dikdortgen:                         //dikdörtgen önizlemesi
                    sekil = Dikdortgen.KuralliDikdortgen(ilkNokta, yeniNokta);
                    break;

                case CizimTipi.Cember:                         //çember önizlemesi
                    sekil = new Cember(ilkNokta.Kopyasi(), ilkNokta.Uzaklik(yeniNokta));
                    break;

                case CizimTipi.Elips:                         //elips önizlemesi
                    sekil = Elips.KuralliElips(ilkNokta, yeniNokta);
                    break;

                case CizimTipi.Dogru:                         //doðru serisi ya da doðru önizlemesi
                case CizimTipi.DogruSerisi:
                    sekil = new Dogru(ilkNokta, yeniNokta);
                    break;
                }
                if (sekil != null)
                {
                    sekil.cizgiRengi = cizimFormu.AnaForm.CizimRengiSecimi.Color;
                    goruntuGuncelle(sekil);
                }
            }
        }
예제 #2
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);
                }
            }
        }
예제 #3
0
        //verilen noktanýn þeklin çizgilerine belirli bir uzaklýk içinde olup olmadýðýný dönderir
        public override bool Civarinda(Nokta nokta, float uzaklik)
        {
            //bu dikdörtgenden uzaklik kadar geniþ bir dikdortgen oluþtur
            Dikdortgen buyuk = new Dikdortgen(new Nokta(solUstKose.x - uzaklik, solUstKose.y + uzaklik),
                                              new Boyut(boyut.genislik + 2.0f * uzaklik, boyut.yukseklik + 2.0f * uzaklik));
            //bu dikdörtgenden uzalik kadar küçük bir dikdörtgen oluþtur
            Dikdortgen kucuk = new Dikdortgen(new Nokta(solUstKose.x + uzaklik, solUstKose.y - uzaklik),
                                              new Boyut(boyut.genislik - 2.0f * uzaklik, boyut.yukseklik - 2.0f * uzaklik));

            //büyük dikdörtgenin içinde ve küçük dikdörtgenin dýþýndysa bu dikdörtgen civarýndadýr
            if ((buyuk.Icinde(nokta)) && (!kucuk.Icinde(nokta)))
            {
                return(true);
            }
            return(false);
        }