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;
}
}
}
}
|