Class VmskResource

VmskResource class

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

public class VmskResource : VectorPathDataResource

Constructeurs

NomLa description
VmskResource()Initialise une nouvelle instance duVmskResource classe.
VmskResource(byte[])Initialise une nouvelle instance duVmskResource 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 VmskResource. Comment fonctionne l’édition des chemins.

[C#]

[Test]
public void TestPsdNet106()
{
    string sourceFileName = "Rectangle.psd";
    string exportPath = "Rectangle_changed.psd";
    var im = (PsdImage)Image.Load(sourceFileName);
    using (im)
    {
        var resource = GetVmskResource(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("VmskResource 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("VmskResource 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(8039797, 10905190);
        initialFillRule.IsFillStartsWithAllPixels = true;
        subpathLength.IsClosed = false;
        im.Save(exportPath);
    }
}

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

Voir également