コード例 #1
0
ファイル: Form1.cs プロジェクト: Ertuss/Simple_Shapes_Paint
        private void cizimPaneli_MouseMove(object sender, MouseEventArgs e)
        {
            // Mouseun bulunduğu konumun bilgisi Point mouseTakipP değişkeninde tutulur.
            Point mouseTakipP = new Point();

            mouseTakipP = e.Location;

            //float x = Math.Min(baslangicNoktasi.X, p.X);
            //float y = Math.Min(baslangicNoktasi.Y, p.Y);

            // x ve y değeri panele ilk tıklandığındaki konumun x ve y değeridir.
            float x = baslangicNoktasi.X;
            float y = baslangicNoktasi.Y;
            // yukseklik ve genislik değeri panele ilk tıklandığındaki konumudan mouse ın bulunduğu
            // konumun fark değerinin mutlak değeridir.
            float yukseklik = Math.Abs(baslangicNoktasi.Y - mouseTakipP.Y);
            float genislik  = Math.Abs(baslangicNoktasi.X - mouseTakipP.X);

            // Panelin sınırlarında sorun olduğu için biraz eksiltme işlemi yaptım.
            int sagSinir = cizimPaneli.Right - 15;
            int solSinir = cizimPaneli.Left - 10;
            int ustSinir = cizimPaneli.Top - 15;
            int altSinir = cizimPaneli.Bottom - 15;

            // genişlik ve yükseklik değerini eşitleyerek sadece düzgün çokkenar çizimini sağlıyorum.
            if (genislik < yukseklik)
            {
                genislik = yukseklik;
            }
            else
            {
                yukseklik = genislik;
            }

            g = cizimPaneli.CreateGraphics();
            // Eğer şekil seçimi ve clickAktifi true ysa
            if (clickAktif && sekilAktif)
            {
                switch (_sekilSecim)
                {
                case sekilSecim.ucgen:

                    float hipotenus = (float)Math.Sqrt((genislik * genislik) + (yukseklik * yukseklik));

                    // Şekil çizerken panel dışına taşmasını engelleyen koşul
                    if (baslangicNoktasi.X - genislik > solSinir &&
                        baslangicNoktasi.X + genislik < sagSinir &&
                        baslangicNoktasi.Y - hipotenus + 30 > ustSinir &&
                        baslangicNoktasi.Y + yukseklik < altSinir)
                    {
                        cizimPaneli.Refresh();
                        ucgen = new Ucgen(istenenRenk, x, y, genislik, yukseklik);
                        ucgen.Ciz(g);
                    }

                    break;

                case sekilSecim.dortgen:

                    // Şekil çizerken panel dışına taşmasını engelleyen koşul
                    if (baslangicNoktasi.X + genislik < sagSinir &&
                        baslangicNoktasi.Y + yukseklik < altSinir)
                    {
                        cizimPaneli.Refresh();
                        dortgen = new Dortgen(istenenRenk, x, y, genislik, yukseklik);
                        dortgen.Ciz(g);
                    }

                    break;

                case sekilSecim.altigen:

                    // Şekil çizerken panel dışına taşmasını engelleyen koşul
                    if (baslangicNoktasi.X - (2 * genislik) > solSinir &&
                        baslangicNoktasi.X + (2 * genislik) < sagSinir &&
                        baslangicNoktasi.Y - (2 * yukseklik) > ustSinir &&
                        baslangicNoktasi.Y + (2 * yukseklik) < altSinir)
                    {
                        cizimPaneli.Refresh();
                        altigen = new Altigen(istenenRenk, x, y, genislik * 4, yukseklik * 4);
                        altigen.Ciz(g);
                    }

                    break;

                case sekilSecim.cember:

                    // Şekil çizerken panel dışına taşmasını engelleyen koşul
                    if (baslangicNoktasi.X + genislik < sagSinir &&
                        baslangicNoktasi.Y + yukseklik < altSinir)
                    {
                        cizimPaneli.Refresh();
                        cember = new Cember(istenenRenk, x, y, genislik, yukseklik);
                        cember.Ciz(g);
                    }

                    break;
                }
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: Ertuss/Simple_Shapes_Paint
        private void dosyadanOku_Click(object sender, EventArgs e)
        {
            dosyaIslemAktif = true;
            sekilAktif      = false;
            secimIslemAktif = false;
            trashIslemAktif = false;

            sekilPaneli.Refresh();
            renkPaneli.Refresh();
            islemPaneli.Refresh();

            seciliKayitDegistir(openFile.Location.X, openFile.Location.Y);

            OpenFileDialog open = new OpenFileDialog();

            open.Filter = "Metin Dosyası|*.txt";


            if (open.ShowDialog() == DialogResult.OK)
            {
                string   satir;
                string[] bilgiler;

                g = cizimPaneli.CreateGraphics();
                StreamReader Oku = new StreamReader(open.FileName);

                while ((satir = Oku.ReadLine()) != null)
                {
                    bilgiler = satir.Split('/');
                    Color color = Color.FromArgb(Convert.ToInt32(bilgiler[5]));

                    //Alınan şekil bilgisine göre nesneyi oluşturur ve sekiller listesine ekler.
                    switch (bilgiler[0])
                    {
                    case "Kare":
                        dortgen = new Dortgen(color, (float)(Convert.ToDouble(bilgiler[1])), (float)(Convert.ToDouble(bilgiler[2])), (float)(Convert.ToDouble(bilgiler[3])), (float)(Convert.ToDouble(bilgiler[4])));
                        sekiller.Add(dortgen);
                        break;

                    case "Cember":
                        cember = new Cember(color, (float)(Convert.ToDouble(bilgiler[1])), (float)(Convert.ToDouble(bilgiler[2])), (float)(Convert.ToDouble(bilgiler[3])), (float)(Convert.ToDouble(bilgiler[4])));
                        sekiller.Add(cember);
                        break;

                    case "Ucgen":
                        ucgen = new Ucgen(color, (float)(Convert.ToDouble(bilgiler[1])), (float)(Convert.ToDouble(bilgiler[2])), (float)(Convert.ToDouble(bilgiler[3])), (float)(Convert.ToDouble(bilgiler[4])));
                        sekiller.Add(ucgen);
                        break;

                    case "Altigen":
                        altigen = new Altigen(color, (float)(Convert.ToDouble(bilgiler[1])), (float)(Convert.ToDouble(bilgiler[2])), (float)(Convert.ToDouble(bilgiler[3])), (float)(Convert.ToDouble(bilgiler[4])));
                        sekiller.Add(altigen);
                        break;

                    default:
                        break;
                    }
                }
                Oku.Close();

                dosyaIslemAktif = false;
                cizimPaneli.Invalidate();
            }
            else
            {
                dosyaIslemAktif = false;
            }

            kayitPaneli.Refresh();
        }