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(); } }
private void lbl_MouseUp(object sender, MouseEventArgs e) { lbl[0].Location = new Point(DrawArea.Right, DrawArea.Height / 2 + DrawArea.Top); lbl[1].Location = new Point(DrawArea.Right, DrawArea.Bottom); lbl[2].Location = new Point(DrawArea.Width / 2 + DrawArea.Left, DrawArea.Bottom); dragging = false; Object tmp = DrawArea.Image.Clone(); DrawArea.Image.Dispose(); g.Dispose(); DrawArea.Image = new Bitmap(DrawArea.Size.Width, DrawArea.Size.Height); g = Graphics.FromImage(DrawArea.Image); g.DrawImageUnscaled((Image)tmp, new Rectangle(0, 0, ((Image)tmp).Width, ((Image)tmp).Height)); ((Image)tmp).Dispose(); DrawArea_G.Dispose(); bufer.Dispose(); Contour.Dispose(); DrawArea_G = DrawArea.CreateGraphics(); bufer = new Bitmap(DrawArea.Width, DrawArea.Height); Contour = Graphics.FromImage(bufer); }
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; } }