Class VmskResource

VmskResource class

Class VmskResource. Questa risorsa contiene informazioni sulla maschera di livello vettoriale

public class VmskResource : VectorPathDataResource

Costruttori

NomeDescrizione
VmskResource()Inizializza una nuova istanza diVmskResource classe.
VmskResource(byte[])Inizializza una nuova istanza diVmskResource classe.

Proprietà

NomeDescrizione
IsDisabled { get; set; }Ottiene o imposta un valore che indica se questa istanza è disabilitata.
IsInverted { get; set; }Ottiene o imposta un valore che indica se questa istanza è invertita.
IsNotLinked { get; set; }Ottiene o imposta un valore che indica se questa istanza non è collegata.
override Key { get; }Ottiene la chiave della risorsa del livello.
override Length { get; }Ottiene la lunghezza della risorsa del livello in byte.
Paths { get; set; }Ottiene o imposta i record del percorso.
override PsdVersion { get; }Ottiene la versione psd.
override Signature { get; }Ottiene la firma.
Version { get; set; }Ottiene o imposta la versione.

Metodi

NomeDescrizione
override Save(StreamContainer, int)Salva la risorsa nel contenitore del flusso specificato.
override ToString()Restituisce aString che rappresenta questa istanza.

Campi

NomeDescrizione
const TypeToolKeyIl tasto informazioni dello strumento testo.

Esempi

L’esempio seguente illustra il supporto del caricamento delle risorse VmskResource. Come funziona la modifica dei percorsi.

[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);
        // Lettura
        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 regola di riempimento del percorso non contiene informazioni aggiuntive
        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");
        }
        // La modifica
        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;
}

Guarda anche