Class VectorPath
Contents
[
Hide
]VectorPath class
The class that contains vector paths.
public class VectorPath : IPath
Constructors
| Name | Description | 
|---|---|
| VectorPath() | Initializes a new instance of the VectorPath class. | 
Properties
| Name | Description | 
|---|---|
| IsDisabled { get; set; } | Gets or sets a value indicating whether this instance is disabled. | 
| IsFillStartsWithAllPixels { get; set; } | Gets or sets a value indicating whether is fill starts with all pixels. | 
| IsInverted { get; set; } | Gets or sets a value indicating whether this instance is inverted. | 
| IsNotLinked { get; set; } | Gets or sets a value indicating whether this instance is not linked. | 
| Version { get; set; } | Gets or sets the version. | 
Methods
| Name | Description | 
|---|---|
| GetItems() | Gets array of Shapes in a Path. | 
| SetItems(IPathShape[]) | Sets array of Shapes in a Path. | 
Examples
The following code demonstrates path objects from vsms or vmsk resources for ShapeLayer.
[C#]
string srcFile = "ShapeLayerTest.psd";
string outFile = "ShapeLayerTest-out.psd";
using (PsdImage image = (PsdImage)Image.Load(
    srcFile,
    new PsdLoadOptions { LoadEffectsResource = true }))
{
    Layer shapeLayer = image.Layers[1];
    VectorPathDataResource vectorPathDataResource = (VectorPathDataResource)shapeLayer.Resources[1];
    bool isFillStartsWithAllPixels;
    List<IPathShape> shapes = GetShapesFromResource(vectorPathDataResource, out isFillStartsWithAllPixels);
    // Remove one shape
    shapes.RemoveAt(1);
    // Save changed data to resource
    List<VectorPathRecord> path = new List<VectorPathRecord>();
    path.Add(new PathFillRuleRecord(null));
    path.Add(new InitialFillRuleRecord(isFillStartsWithAllPixels));
    for (ushort i = 0; i < shapes.Count; i++)
    {
        PathShape shape = (PathShape)shapes[i];
        shape.ShapeIndex = i;
        path.AddRange(shape.ToVectorPathRecords());
    }
    vectorPathDataResource.Paths = path.ToArray();
    image.Save(outFile);
}
// Check changed values in saved file
using (PsdImage image = (PsdImage)Image.Load(
    outFile,
    new PsdLoadOptions { LoadEffectsResource = true }))
{
    Layer shapeLayer = image.Layers[1];
    VectorPathDataResource vectorPathDataResource = (VectorPathDataResource)shapeLayer.Resources[1];
    bool isFillStartsWithAllPixels;
    List<IPathShape> shapes = GetShapesFromResource(vectorPathDataResource, out isFillStartsWithAllPixels);
    // Saved file should have 1 shape
    AssertAreEqual(1, shapes.Count);
}
void AssertAreEqual(object expected, object actual, string message = null)
{
    if (!object.Equals(expected, actual))
    {
        throw new Exception(message ?? "Objects are not equal.");
    }
}
List<IPathShape> GetShapesFromResource(
    VectorPathDataResource vectorPathDataResource,
    out bool isFillStartsWithAllPixels)
{
    List<IPathShape> shapes = new List<IPathShape>();
    LengthRecord lengthRecord = null;
    isFillStartsWithAllPixels = false;
    List<BezierKnotRecord> bezierKnotRecords = new List<BezierKnotRecord>();
    foreach (var pathRecord in vectorPathDataResource.Paths)
    {
        if (pathRecord is LengthRecord)
        {
            if (bezierKnotRecords.Count > 0)
            {
                shapes.Add(new PathShape(lengthRecord, bezierKnotRecords.ToArray()));
                lengthRecord = null;
                bezierKnotRecords.Clear();
            }
            lengthRecord = (LengthRecord)pathRecord;
        }
        else if (pathRecord is BezierKnotRecord)
        {
            bezierKnotRecords.Add((BezierKnotRecord)pathRecord);
        }
        else if (pathRecord is InitialFillRuleRecord)
        {
            InitialFillRuleRecord initialFillRuleRecord = (InitialFillRuleRecord)pathRecord;
            isFillStartsWithAllPixels = initialFillRuleRecord.IsFillStartsWithAllPixels;
        }
    }
    if (bezierKnotRecords.Count > 0)
    {
        shapes.Add(new PathShape(lengthRecord, bezierKnotRecords.ToArray()));
        lengthRecord = null;
        bezierKnotRecords.Clear();
    }
    return shapes;
}
See Also
- interface IPath
 - namespace Aspose.PSD.FileFormats.Psd.Layers.LayerResources
 - assembly Aspose.PSD