public GraphicsPath(PointF [] pts, byte [] types, FillMode fillMode)
{
if (pts == null)
throw new ArgumentNullException ("pts");
if (types == null)
throw new ArgumentNullException ("types");
if (pts.Length != types.Length)
throw new ArgumentException ("Invalid parameter passed. Number of points and types must be same.");
this.fillMode = fillMode;
foreach (int type in types){
if (type == 0 || type == 1 || type == 3 || type == 16 || type == 32 || type == 128 || type == 129)
continue;
throw new ArgumentException ("The pts array contains an invalid value for PathPointType: " + type);
}
this.points = new List<PointF> (pts);
this.types = new List<byte> (types);
}