Class AnimatedDataSectionStructure

AnimatedDataSectionStructure class

Bagian dengan data animasi.

public class AnimatedDataSectionStructure : OSTypeStructure

Properti

NamaKeterangan
Items { get; }Mendapat atau menyetel struktur bagian data animasi.
override Key { get; }Mendapat kunci struktur.
KeyName { get; set; }Mendapat atau menyetel nama kunci.
override Length { get; }MendapatkanOSTypeStructure panjang dalam byte.

Metode

NamaKeterangan
virtual GetHeaderLength()Mendapatkan panjang tajuk.
Save(StreamContainer)Menyimpan struktur ke wadah aliran yang ditentukan.
SaveWithoutKeyName(StreamContainer)Menyimpan struktur ke wadah aliran yang ditentukan.

Bidang

NamaKeterangan
const StructureKeyMengidentifikasi kunci struktur AnDs.

Contoh

Kode berikut menunjukkan cara menyetel/memperbarui waktu tunda dalam kerangka waktu data animasi.

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

            // Membuat rekaman penundaan frame dengan nilai 100 centi-second yang sama dengan 1 detik.
            var frameDelay = new IntegerStructure(new ClassID("FrDl"));
            frameDelay.Value = 100; // atur waktu dalam centi-seconds.

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

            break;
        }
    }

    image.Save(outputPsd);
}

Lihat juga