Example #1
0
        private void mainForm_MouseClick(object sender, MouseEventArgs e)
        {
            switch (e.Button)
            {
            case MouseButtons.Left:


                pb.BackColor = Color.Transparent;                                  //  с прозрачным фономо
                pb.Location  = new Point(e.Location.X, e.Location.Y);              //на месте клика
                Figure f = new Figure();                                           //объект для рисования фигур

                Bitmap bitmap = new Bitmap(pb.Width, pb.Height);                   //превращаем геометрические фигуры в рисунок

                Graphics g = Graphics.FromImage(bitmap);

                pb.Image = bitmap;                                         //записываем рисунок в pictirebox
                Controls.Add(pb);                                          //добавляем picturebox на форму


                pb.MouseDown += (s, a) => { clickDown = true; };          //обработчик событий при нажатии левой кнопки мыши
                pb.MouseUp   += (s, a) => { clickDown = false; };         //обработчик событий при отпускании левой кнопки мыши
                pb.MouseMove += (s, a) =>                                 // перемещение мышки
                {
                    Cursor.Current = Cursors.SizeAll;                     //меняем курсор при наведении
                    if (clickDown)
                    {
                        //перемещаем фигуру
                        pb.Location = new Point((Cursor.Position.X - this.Location.X - 50), (Cursor.Position.Y - this.Location.Y - 50));
                    }
                };



                if (RbPolygon.Checked)
                {
                    f.DrawRegularPolygon(g);
                }
                if (RbReactangle.Checked)
                {
                    f.DrawRectangle(g);
                }
                if (RbCircle.Checked)
                {
                    f.DrawCircle(g);
                }
                if (RbSquare.Checked)
                {
                    f.DrawSquare(g);
                }
                if (RbTriangle.Checked)
                {
                    f.DrawTriangle(g);
                }
                break;

            //удаляем фигуры
            case MouseButtons.Right:

                if (Figure.countCorners > 2)
                {
                    Controls.Remove(pb);
                    Figure.countCorners = 2;
                }
                else
                {
                    MessageBox.Show("На поле нет фигур для удаления!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                break;
            }
        }