Graphics.Dispose() : Graphics « System.Drawing « C# / C Sharp by API






Graphics.Dispose()

   

using System;
using System.Drawing;
using System.Windows.Forms;
   
class BlockOut: Form
{
     bool      bBlocking, bValidBox;
     Point     ptBeg, ptEnd;
     Rectangle rectBox;
   
     public static void Main()
     {
          Application.Run(new BlockOut());
     }
     protected override void OnMouseDown(MouseEventArgs mea)
     {
          if (mea.Button == MouseButtons.Left)
          {
               ptBeg = ptEnd = new Point(mea.X, mea.Y);
   
               Graphics grfx = CreateGraphics();
               grfx.DrawRectangle(new Pen(ForeColor), Rect(ptBeg, ptEnd));
               grfx.Dispose();
   
               bBlocking = true;
          }
     }
     protected override void OnMouseMove(MouseEventArgs mea)
     {
          if (bBlocking)
          {
               Graphics grfx = CreateGraphics();
               grfx.DrawRectangle(new Pen(BackColor), Rect(ptBeg, ptEnd));
               ptEnd = new Point(mea.X, mea.Y);
               grfx.DrawRectangle(new Pen(ForeColor), Rect(ptBeg, ptEnd));
               grfx.Dispose();
               Invalidate();
          }
     }
     protected override void OnMouseUp(MouseEventArgs mea)
     {
          if (bBlocking && mea.Button == MouseButtons.Left)
          {
               Graphics grfx = CreateGraphics();
               rectBox = Rect(ptBeg, new Point(mea.X, mea.Y));
               grfx.DrawRectangle(new Pen(ForeColor), rectBox);
               grfx.Dispose();
   
               bBlocking = false;
               bValidBox = true;
               Invalidate();
          }
     }
     protected override void OnPaint(PaintEventArgs pea)
     {
          Graphics grfx = pea.Graphics;
   
          if (bValidBox)
               grfx.FillRectangle(new SolidBrush(ForeColor), rectBox);
   
          if (bBlocking)
               grfx.DrawRectangle(new Pen(ForeColor), Rect(ptBeg, ptEnd));
     }
     Rectangle Rect(Point ptBeg, Point ptEnd)
     {
          return new Rectangle(Math.Min(ptBeg.X, ptEnd.X),
                               Math.Min(ptBeg.Y, ptEnd.Y),
                               Math.Abs(ptEnd.X - ptBeg.X),
                               Math.Abs(ptEnd.Y - ptBeg.Y));
     }
}

   
    
    
  








Related examples in the same category

1.Graphics.Clear
2.Graphics.CopyFromScreen
3.Graphics.DashCap
4.Graphics.DpiX
5.Graphics.DpiY
6.Graphics.DrawArc
7.Graphics.DrawBeziers
8.Graphics.DrawEllipse
9.Graphics.DrawIcon(Icon icon, int x, int y)
10.Graphics.DrawImage(Image i, int x, int y);
11.Graphics.DrawImage(Image img, int x, int y, int width, int height)
12.Graphics.DrawImage(im, rec, recPart, GraphicsUnit.Pixel)
13.Graphics.DrawImage(Image, Points[])
14.Graphics.DrawLine(Pen p, int x0,int y0, int x1, int y1)
15.Graphics.DrawLine(Pen,Point point1, Point point2)
16.Graphics.DrawLines(Pen pen, Point[] points)
17.Graphics.DrawPie
18.Graphics.DrawRectangle
19.Graphics.DrawRectangles
20.Graphics.DrawString
21.Graphics.EnumerateMetafileProc
22.Graphics.FillClosedCurve
23.Graphics.FillEllipse
24.Graphics.FillEllipse(Brush brush,int x, int y,int width,int height)
25.Graphics.FillPath(Brushes.AliceBlue, myPath);
26.Graphics.FillPolygon
27.Graphics.FillRectangle
28.Graphics.FillRectangles
29.Graphics.FillRegion
30.Graphics.FromHwnd()
31.Graphics.FromImage
32.Graphics.InterpolationMode
33.Graphics.MeasureString
34.Graphics.PageScale
35.Graphics.PageUnit
36.Graphics.PixelOffsetMode
37.Graphics.ReleaseHdc
38.Graphics.RotateTransform
39.Graphics.ScaleTransform
40.Graphics.SetClip
41.Graphics.SetClip(path, (CombineMode)miCombineMode.Index)
42.Graphics.SmoothingMode
43.Graphics.TextRenderingHint
44.Graphics.Transform
45.Graphics.TranslateClip
46.Graphics.TranslateTransform
47.Graphics.VisibleClipBounds