示例#1
0
 private void DrawArea_MouseUp(object sender, MouseEventArgs e)
 {
     MouseDownDrawArea = false;
     if (CurTool == "Figures")
     {
         if (Figures.ImageIndex == 2)
         {
             if (points.Count == 3)
             {
                 g.DrawPolygon(PEN, points.Cast <Point>().ToArray <Point>());
                 points.Clear();
                 DrawArea.Invalidate();
             }
         }
         else if (Figures.ImageIndex == 4)
         {
             if (points.Count > 1)
             {
                 Contour.Clear(Color.White);
                 Contour.DrawImage(DrawArea.Image, 0, 0);
                 Contour.DrawPolygon(PEN, points.Cast <Point>().ToArray <Point>());
                 DrawArea_G.DrawImageUnscaled(bufer, 0, 0);
             }
         }
         else
         {
             g.DrawImageUnscaled(bufer, 0, 0);
             points.Clear();
         }
     }
     else
     {
         points.Clear();
     }
 }
示例#2
0
        private void DrawArea_MouseMove(object sender, MouseEventArgs e)
        {
            Status.Items["CurPoss"].Text = e.X + ", " + e.Y;
            if (MouseDownDrawArea)
            {
                int X = e.X - SizePen / 2;
                int Y = e.Y - SizePen / 2;
                switch (CurTool)
                {
                case "Pen":
                    PEN.Width = SizePen = 1;
                    g.FillRectangle(PEN.Brush, X, Y, SizePen, SizePen);
                    g.DrawLine(PEN, prevLocMouse.X + SizePen / 2, prevLocMouse.Y + SizePen / 2, X + SizePen / 2, Y + SizePen / 2);
                    DrawArea.Invalidate();
                    break;

                case "Brush":
                    if (SizePen > 1)
                    {
                        g.FillEllipse(PEN.Brush, X, Y, SizePen, SizePen);
                    }
                    else
                    {
                        g.FillRectangle(PEN.Brush, X, Y, SizePen, SizePen);
                    }
                    g.DrawLine(PEN, prevLocMouse.X + SizePen / 2, prevLocMouse.Y + SizePen / 2, X + SizePen / 2, Y + SizePen / 2);
                    DrawArea.Invalidate();
                    break;

                case "Pattern":
                    HatchBrush Hatch = new HatchBrush(HatchStyle.Horizontal + Pattern.ImageIndex, CurColor.BackColor, Color.FromArgb(0, 0, 0, 0));
                    if (SizePen > 1)
                    {
                        g.FillEllipse(Hatch, X, Y, SizePen, SizePen);
                    }
                    else
                    {
                        g.FillRectangle(Hatch, X, Y, SizePen, SizePen);
                    }
                    Hatch.Dispose();
                    DrawArea.Invalidate();
                    break;

                case "Figures":
                    Contour.Clear(Color.White);
                    Contour.DrawImage(DrawArea.Image, 0, 0);
                    switch (Figures.ImageIndex)
                    {
                    case 0:
                        Contour.DrawRectangle(PEN, (e.X > x) ? x : e.X, (e.Y > y) ? y : e.Y, (e.X > x) ? e.X - x : x - e.X, (e.Y > y) ? e.Y - y : y - e.Y);
                        break;

                    case 1:
                        Contour.DrawEllipse(PEN, (e.X > x) ? x : e.X, (e.Y > y) ? y : e.Y, (e.X > x) ? e.X - x : x - e.X, (e.Y > y) ? e.Y - y : y - e.Y);
                        break;

                    case 3:
                        Contour.DrawLine(PEN, x, y, e.X, e.Y);
                        break;
                    }
                    DrawArea_G.DrawImageUnscaled(bufer, 0, 0);
                    break;
                }
                prevLocMouse.X = X;
                prevLocMouse.Y = Y;
            }
        }