Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2018, 06:58   #1
Wario
Пользователь
 
Регистрация: 08.04.2018
Сообщений: 18
По умолчанию Переделать код

C# Windows form
Переделать код чтобы он создал окружность с крестом внутри, а не это фигуру.
Код:
   public partial class Form1 : Form
    {
        int i, j, k, q, w, a, b,kol;
        bool f, f1, f2, f3, f4, f_tmp;
        GraphicsPath[] p;
        GraphicsPath tmp = new GraphicsPath();
        PointF[] v = new PointF[19];
        PointF d, u;
        float t_;
        double pi = Math.PI / 180;
        Color[] c1, c2;
        Color c_1 = Color.Black, c_2 = Color.Red;
        bool[] vid;
        PointF[] kv = new PointF[8];
        RectangleF rect;

        float[] t;


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (f1)
            {
                v[9].X =v[3].X= d.X;
                v[9].Y =v[10].Y=v[11].Y=v[12].Y=v[13].Y= d.Y;
                v[3].Y = v[2].Y = v[1].Y = v[0].Y = v[18].Y =v[17].Y= e.Y;
                v[14].X = v[15].X = v[16].X = e.X;
                v[6].Y = v[15].Y = d.Y + (e.Y - d.Y) / 2;
                v[6].X = v[10].X = v[2].X = d.X+ (0.35f* (e.X - d.X));
                v[0].X = v[18].X = v[12].X = d.X + (0.7f*(e.X - d.X));
                v[1].X = v[11].X = d.X+ (0.5f* (e.X - d.X));
                v[13].X = v[17].X = v[12].X + 0.553f * ((e.X - d.X) / 2);
                v[14].Y = v[15].Y - 0.553f * ((e.Y - d.Y) / 2);
                v[16].Y = v[15].Y + 0.553f * ((e.Y - d.Y) / 2);
                v[4].X = v[8].X = v[3].X + 0.3f * (v[6].X - v[3].X);
                v[5].X = v[7].X = v[3].X + 0.7f * (v[6].X - v[3].X);
                v[4].Y = v[3].Y + 0.3f * (v[6].Y - v[3].Y);
                v[5].Y = v[3].Y + 0.7f * (v[6].Y - v[3].Y);
                v[7].Y = v[9].Y + 0.7f * (v[6].Y - v[9].Y);
                v[8].Y = v[9].Y + 0.3f * (v[6].Y - v[9].Y);
                tmp.Reset();
                tmp.AddBeziers(v);
                Invalidate();
            }
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr = e.Graphics;
           
            if (kol > 0)
            {
                for (i = 0; i < kol; i++)
                {
                    gr.FillPath(new SolidBrush(c2[i]), p[i]);
                    gr.DrawPath(new Pen(c1[i], t[i]), p[i]);
                }
                for (i = 0; i < vid.Length; i++)
                {
                    if (vid[i])
                    {
                        for (j = 0; j < 8; j++)
                            gr.FillRectangle(new SolidBrush(Color.Black), kv[j].X, kv[j].Y, 10, 10);
                        break;
                    }
                }
            }
            if (f1)
            {
                gr.FillPath(new SolidBrush(c_2), tmp);
                gr.DrawPath(new Pen(c_1, (float)numericUpDown8.Value), tmp);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            t_ = (float)numericUpDown8.Value;
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (kol > 0 && f1 == false) // выделение объектов
            {
                for (i = vid.Length - 1; i > -1; i--)
                {
                    if (p[i].IsVisible(e.Location)) { vid[i] = !vid[i];
                    kvadrati();
                        Invalidate(); return;
                    }
                } for (i = 0; i < vid.Length; i++) vid[i] = false;
                numericUpDown8.Value =(decimal) t_;
                Invalidate();
            }
            if (f1) // рисование объектов
            {
                f1 = f = false; Cursor = Cursors.Default;
                kol++;
                Array.Resize(ref p, kol); p[kol - 1] = new GraphicsPath(); p[kol - 1].AddPath(tmp, true);
                Array.Resize(ref c1, kol); c1[kol - 1] = button1.BackColor;
                Array.Resize(ref c2, kol); c2[kol - 1] = button2.BackColor;
                Array.Resize(ref vid, kol);
                Array.Resize(ref t, kol); t[kol - 1] = (float)numericUpDown8.Value;
                Invalidate();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            colorDialog1.Color = button1.BackColor;
            colorDialog1.ShowDialog();
            button1.BackColor = colorDialog1.Color;
            if (kol==0) {c_1=button1.BackColor; return;}
            f3 = false;
            for (i = 0; i < vid.Length; i++)
            {
                if (vid[i]) { c1[i] = button1.BackColor; f3 = true; }
     
            }
            if (f3 == false) c_1 = button1.BackColor;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            colorDialog1.Color = button2.BackColor;
            colorDialog1.ShowDialog();
            button2.BackColor = colorDialog1.Color;
            if (kol == 0) { c_2 = button2.BackColor; return; }
            f3 = false;
            for (i = 0; i < vid.Length; i++)
            {
                if (vid[i]) { c2[i] = button2.BackColor; f3 = true; }

            }
            if (f3 == false) c_2 = button2.BackColor;
        }

        private void выделитьВсеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            for (i = 0; i < t.Length; i++) vid[i] = true;
            kvadrati();
            Invalidate();
        }

       void kvadrati()
        {
            tmp.Reset();
            for (j = 0; j < vid.Length; j++)
            {
                if (vid[j]) tmp.AddPath(p[j], true);
            }
            rect = tmp.GetBounds();
            kv[0].X = rect.Left - 10; kv[0].Y = rect.Top - 10;
            kv[1].X = rect.Left + rect.Width / 2 - 5; kv[1].Y = rect.Top - 10;
            kv[2].X = rect.Right; kv[2].Y = rect.Top - 10;
            kv[3].X = rect.Left - 10; kv[3].Y = rect.Top + rect.Height / 2 - 5;
            kv[4].X = rect.Right; kv[4].Y = rect.Top + rect.Height / 2 - 5;
            kv[5].X = rect.Left - 10; kv[5].Y = rect.Bottom;
            kv[6].X = kv[1].X; kv[6].Y = rect.Bottom;
            kv[7].X = rect.Right; kv[7].Y = rect.Bottom;

        }

       private void Form1_KeyDown(object sender, KeyEventArgs e)
       {
           if (e.KeyCode == Keys.Delete && kol > 0)
           {
               udalenie();
             
           }
       }


       void udalenie()
       {
           k = q = 0;
           for (i = 0; i < kol; i++)
           {
               if (vid[i] == false)
               {
                   p[k] = p[i]; c1[k] = c1[i]; c2[k] = c2[i];
                   t[k] = t[i]; vid[k] = vid[i]; k++;
               }
               else q++;
           }
           kol -= q;
           Array.Resize(ref p, kol);
           Array.Resize(ref c1, kol);
           Array.Resize(ref c2, kol);
           Array.Resize(ref t, kol);
           Array.Resize(ref vid, kol);
           tmp.Reset();


           Invalidate();
       }

       private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)
       {
           udalenie();
       }

       private void numericUpDown8_ValueChanged(object sender, EventArgs e)
       {
           f_tmp = false;
           for (i = 0; i < kol; i++)
           {
               if (vid[i]) { t[i] = (float)numericUpDown8.Value; f_tmp = true; }
           }
           if (f_tmp == false) t_ = (float)numericUpDown8.Value;
           kvadrati();
           Invalidate();
       }

       private void нижнийToolStripMenuItem_Click(object sender, EventArgs e)
       {
           for (i = 0; i < kol; i++) vid[i] = false;
          if (sender==niz) vid[0] = true;
          else vid[kol - 1] = true;
           kvadrati();
           Invalidate();
       }
        
    }
}
Изображения
Тип файла: png Снимок экрана (106) — копия.png (39.2 Кб, 123 просмотров)
Тип файла: png Снимок экрана (105).png (4.3 Кб, 40 просмотров)
Вложения
Тип файла: rar вокружскрест.rar (212.5 Кб, 8 просмотров)
Wario вне форума Ответить с цитированием
Старый 04.06.2018, 09:39   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Пишите по указанным контактам.
Изображения
Тип файла: jpg result.jpg (43.3 Кб, 113 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать код Olaa Помощь студентам 0 08.06.2017 22:46
Help me (переделать код на си #) Мадлен Помощь студентам 3 24.12.2015 14:34
Переделать код dkii Общие вопросы C/C++ 1 25.02.2014 02:56
переделать код С++ на С bilochka Помощь студентам 1 10.05.2013 15:48
Переделать код Faton 11 Общие вопросы C/C++ 6 21.01.2013 02:11