Class VsmsResource

VsmsResource class

Classe VsmsResource. Cette ressource contient des informations sur le masque de couche vectorielle

public class VsmsResource : VectorPathDataResource

Constructeurs

NomLa description
VsmsResource()Initialise une nouvelle instance duVsmsResource classe.
VsmsResource(byte[])Initialise une nouvelle instance duVsmsResource classe.

Propriétés

NomLa description
IsDisabled { get; set; }Obtient ou définit une valeur indiquant si cette instance est désactivée.
IsInverted { get; set; }Obtient ou définit une valeur indiquant si cette instance est inversée.
IsNotLinked { get; set; }Obtient ou définit une valeur indiquant si cette instance n’est pas liée.
override Key { get; }Obtient la clé de ressource de couche.
override Length { get; }Obtient la longueur de la ressource de couche en octets.
Paths { get; set; }Obtient ou définit les enregistrements de chemin.
override PsdVersion { get; }Obtient la version psd.
override Signature { get; }Obtient la signature.
Version { get; set; }Obtient ou définit la version.

Méthodes

NomLa description
override Save(StreamContainer, int)Enregistre la ressource dans le conteneur de flux spécifié.
override ToString()Renvoie unString qui représente cette instance.

Des champs

NomLa description
const TypeToolKeyLa clé d’informations sur l’outil de type.

Exemples

L’exemple suivant illustre la prise en charge du chargement des ressources VsmsResource. Comment fonctionne l’édition des chemins.

[C#]

[Test]
public void TestPsdNet140()
{
    // Prise en charge de VsmsResource
    string sourceFileName = "EmptyRectangle.psd";
    string exportPath = "EmptyRectangle_changed.psd";
    var im = (PsdImage)Image.Load(sourceFileName);
    using (im)
    {
        var resource = GetVsmsResource(im);
        // En lisant
        if (resource.IsDisabled != false ||
            resource.IsInverted != false ||
            resource.IsNotLinked != false ||
            resource.Paths.Length != 7 ||
            resource.Paths[0].Type != VectorPathType.PathFillRuleRecord ||
            resource.Paths[1].Type != VectorPathType.InitialFillRuleRecord ||
            resource.Paths[2].Type != VectorPathType.ClosedSubpathLengthRecord ||
            resource.Paths[3].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
            resource.Paths[4].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
            resource.Paths[5].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
            resource.Paths[6].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked)
        {
            throw new Exception("VsmsResource was read wrong");
        }

        var pathFillRule = (PathFillRuleRecord)resource.Paths[0];
        var initialFillRule = (InitialFillRuleRecord)resource.Paths[1];
        var subpathLength = (LengthRecord)resource.Paths[2];

        // La règle de remplissage du chemin ne contient aucune information supplémentaire
        if (pathFillRule.Type != VectorPathType.PathFillRuleRecord ||
        initialFillRule.Type != VectorPathType.InitialFillRuleRecord ||
        initialFillRule.IsFillStartsWithAllPixels != false ||
        subpathLength.Type != VectorPathType.ClosedSubpathLengthRecord ||
        subpathLength.IsClosed != true ||
        subpathLength.IsOpen != false)
        {
            throw new Exception("VsmsResource paths were read wrong");
        }

        // Édition
        resource.IsDisabled = true;
        resource.IsInverted = true;
        resource.IsNotLinked = true;
        var bezierKnot = (BezierKnotRecord)resource.Paths[3];
        bezierKnot.Points[0] = new Point(0, 0);
        bezierKnot = (BezierKnotRecord)resource.Paths[4];
        bezierKnot.Points[0] = new Point(8039798, 10905191);
        initialFillRule.IsFillStartsWithAllPixels = true;
        subpathLength.IsClosed = false;
        im.Save(exportPath);
    }
}

private VsmsResource GetVsmsResource(PsdImage image)
{
    var layer = image.Layers[1];
    VsmsResource resource = null;
    var resources = layer.Resources;
    for (int i = 0; i < resources.Length; i++)
    {
        if (resources[i] is VsmsResource)
        {
            resource = (VsmsResource)resources[i];
            break;
        }
    }
    if (resource == null)
    {
        throw new Exception("VsmsResource not found");
    }
    return resource;
}

Voir également