Class AnimatedDataSectionStructure

AnimatedDataSectionStructure class

De sectie met geanimeerde gegevens.

public class AnimatedDataSectionStructure : OSTypeStructure

Eigenschappen

NaamBeschrijving
Items { get; }Haalt of stelt de geanimeerde datasectiestructuren op.
override Key { get; }Haalt de structuursleutel op.
KeyName { get; set; }Haalt de sleutelnaam op of stelt deze in.
override Length { get; }Krijgt deOSTypeStructure lengte in bytes.

methoden

NaamBeschrijving
virtual GetHeaderLength()Haalt de koplengte op.
Save(StreamContainer)Slaat de structuur op in de opgegeven streamcontainer.
SaveWithoutKeyName(StreamContainer)Slaat de structuur op in de opgegeven streamcontainer.

Velden

NaamBeschrijving
const StructureKeyIdentificeert de structuursleutel van AnDs.

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