Class AnimatedDataSectionResource

AnimatedDataSectionResource class

De plug-inbron voor de geanimeerde gegevenssectie.

public class AnimatedDataSectionResource : ResourceBlock

Eigenschappen

NaamBeschrijving
AnimatedDataSection { get; }Haalt de structuur van de geanimeerde gegevenssectie op of stelt deze in.
override DataSize { get; }Haalt de gegevensgrootte van de bron op in bytes.
ID { get; set; }Haalt de unieke identificatie voor de resource op of stelt deze in.
KeyName { get; }De naam van de bronsleutel.
override MinimalVersion { get; }Krijgt de minimaal vereiste PSD-versie.
Name { get; set; }Haalt de resourcenaam op of stelt deze in. Pascal-tekenreeks, opgevuld om de grootte gelijk te maken (een null-naam bestaat uit twee bytes van 0).
Signature { get; }Haalt de bronhandtekening op. Moet altijd ‘8BIM’ zijn.
Size { get; }Haalt de grootte van het bronblok op in bytes inclusief de gegevens.

methoden

NaamBeschrijving
Save(StreamContainer)Slaat het bronblok op in de opgegeven stream.
virtual ValidateValues()Valideert de bronwaarden.

Voorbeelden

De volgende code laat zien hoe u de vertragingstijd in het tijdlijnframe van geanimeerde gegevens instelt/bijwerkt.

[C#]

string sourceFile = "3_animated.psd";
string outputPsd = "output_3_animated.psd";

T FindStructure<T>(IEnumerable<OSTypeStructure> structures, string keyName) where T : OSTypeStructure
{
    foreach (var structure in structures)
    {
        if (structure.KeyName.ClassName == keyName)
        {
            return structure as T;
        }
    }

    return null;
}

OSTypeStructure[] AddOrReplaceStructure(IEnumerable<OSTypeStructure> structures, OSTypeStructure newStructure)
{
    List<OSTypeStructure> listOfStructures = new List<OSTypeStructure>(structures);

    for (int i = 0; i < listOfStructures.Count; i++)
    {
        OSTypeStructure structure = listOfStructures[i];
        if (structure.KeyName.ClassName == newStructure.KeyName.ClassName)
        {
            listOfStructures.RemoveAt(i);
            break;
        }
    }

    listOfStructures.Add(newStructure);

    return listOfStructures.ToArray();
}

using (PsdImage image = (PsdImage)Image.Load(sourceFile))
{
    foreach (var imageResource in image.ImageResources)
    {
        if (imageResource is AnimatedDataSectionResource)
        {
            var animatedData =
                (AnimatedDataSectionStructure) (imageResource as AnimatedDataSectionResource).AnimatedDataSection;
            var framesList = FindStructure<ListStructure>(animatedData.Items, "FrIn");

            var frame1 = (DescriptorStructure)framesList.Types[1];

            // Creëert de frame delay record met een waarde van 100 centi-seconde die gelijk is aan 1 seconde.
            var frameDelay = new IntegerStructure(new ClassID("FrDl"));
            frameDelay.Value = 100; // tijd instellen in centiseconden.

            frame1.Structures = AddOrReplaceStructure(frame1.Structures, frameDelay);

            break;
        }
    }

    image.Save(outputPsd);
}

Zie ook