Class AnimatedDataSectionStructure

AnimatedDataSectionStructure class

Η ενότητα με κινούμενα δεδομένα.

public class AnimatedDataSectionStructure : OSTypeStructure

Ιδιότητες

ΟνομαΠεριγραφή
Items { get; }Λαμβάνει ή ορίζει τις δομές της ενότητας κινούμενων δεδομένων.
override Key { get; }Λαμβάνει το κλειδί δομής.
KeyName { get; set; }Λαμβάνει ή ορίζει το όνομα του κλειδιού.
override Length { get; }Λαμβάνει τοOSTypeStructure μήκος σε byte.

Μέθοδοι

ΟνομαΠεριγραφή
virtual GetHeaderLength()Λαμβάνει το μήκος της κεφαλίδας.
Save(StreamContainer)Αποθηκεύει τη δομή στο καθορισμένο κοντέινερ ροής.
SaveWithoutKeyName(StreamContainer)Αποθηκεύει τη δομή στο καθορισμένο κοντέινερ ροής.

Πεδία

ΟνομαΠεριγραφή
const StructureKeyΠροσδιορίζει το κλειδί δομής των AnD.

Παραδείγματα

Ο παρακάτω κώδικας δείχνει τον τρόπο ρύθμισης/ενημέρωσης του χρόνου καθυστέρησης στο πλαίσιο της γραμμής χρόνου των κινούμενων δεδομένων.

[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];

            // Δημιουργεί την εγγραφή καθυστέρησης καρέ με τιμή 100 centi-second που ισούται με 1 δευτερόλεπτο.
            var frameDelay = new IntegerStructure(new ClassID("FrDl"));
            frameDelay.Value = 100; // ορισμός χρόνου σε εκατοστά του δευτερολέπτου.

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

            break;
        }
    }

    image.Save(outputPsd);
}

Δείτε επίσης