Mega Code Archive

 
Categories / C# / 2D Graphics
 

Widen a Path

using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;     class WidenPath: Form {      GraphicsPath path= new GraphicsPath();          public static void Main()      {           Application.Run(new WidenPath());      }      public WidenPath()      {           ResizeRedraw = true;                path.AddLines(new Point[] { new Point(20, 10),                                       new Point(50, 50),                                       new Point(80, 10) });               path.AddPolygon(new Point[] { new Point(20, 30),                                         new Point(50, 70),                                         new Point(80, 30) });      }      protected override void OnPaint(PaintEventArgs pea)      {           DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);      }            protected void DoPage(Graphics grfx, Color clr, int cx, int cy)      {           grfx.ScaleTransform(cx / 300f, cy / 200f);               for (int i = 0; i < 6; i++)           {                GraphicsPath pathClone = (GraphicsPath) path.Clone();                Matrix       matrix    = new Matrix();                Pen          penThin   = new Pen(clr, 1);                Pen          penThick  = new Pen(clr, 5);                Pen          penWiden  = new Pen(clr, 7.5f);                Brush        brush     = new SolidBrush(clr);                                   matrix.Translate((i % 3) * 100, (i / 3) * 100);                    if (i < 3)                     pathClone.Transform(matrix);                else                     pathClone.Widen(penWiden, matrix);                    switch (i % 3)                {                case 0:  grfx.DrawPath(penThin, pathClone);   break;                case 1:  grfx.DrawPath(penThick, pathClone);  break;                case 2:  grfx.FillPath(brush, pathClone);     break;                }           }      } }