GraphicsPath::Flatten Method (Matrix^, Single)

 

Converts each curve in this GraphicsPath into a sequence of connected line segments.

Namespace:   System.Drawing.Drawing2D
Assembly:  System.Drawing (in System.Drawing.dll)

public:
void Flatten(
	Matrix^ matrix,
	float flatness
)

Parameters

matrix
Type: System.Drawing.Drawing2D::Matrix^

A Matrix by which to transform this GraphicsPath before flattening.

flatness
Type: System::Single

Specifies the maximum permitted error between the curve and its flattened approximation. A value of 0.25 is the default. Reducing the flatness value will increase the number of line segments in the approximation.

The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, an OnPaint event object. The code performs the following actions:

  • Creates a graphics path and a translation matrix.

  • Adds a curve to the path using four points.

  • Draws the path (curve) to the screen, using a black pen.

  • Shifts the curve down 10 pixels and flattens it.

  • Draws the curve to the screen using, a red pen.

Notice that the red curve has flattened lines connecting the points.

private:
   void FlattenExample( PaintEventArgs^ e )
   {
      GraphicsPath^ myPath = gcnew GraphicsPath;
      Matrix^ translateMatrix = gcnew Matrix;
      translateMatrix->Translate( 0, 10 );
      Point point1 = Point(20,100);
      Point point2 = Point(70,10);
      Point point3 = Point(130,200);
      Point point4 = Point(180,100);
      array<Point>^ points = {point1,point2,point3,point4};
      myPath->AddCurve( points );
      e->Graphics->DrawPath( gcnew Pen( Color::Black,2.0f ), myPath );
      myPath->Flatten( translateMatrix, 10.0f );
      e->Graphics->DrawPath( gcnew Pen( Color::Red,1.0f ), myPath );
   }

.NET Framework
Available since 1.1
Return to top
Show: