Class VsmsResource

VsmsResource class

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

public class VsmsResource : VectorPathDataResource

Costruttori

NomeDescrizione
VsmsResource()Inizializza una nuova istanza diVsmsResource classe.
VsmsResource(byte[])Inizializza una nuova istanza diVsmsResource 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

Nell’esempio seguente viene illustrato il supporto del caricamento delle risorse VsmsResource. Come funziona la modifica dei percorsi.

[C#]

[Test]
public void TestPsdNet140()
{
    // Supporto risorsa Vsms
    string sourceFileName = "EmptyRectangle.psd";
    string exportPath = "EmptyRectangle_changed.psd";
    var im = (PsdImage)Image.Load(sourceFileName);
    using (im)
    {
        var resource = GetVsmsResource(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("VsmsResource 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("VsmsResource 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(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;
}

Guarda anche