Class AnimatedDataSectionStructure

AnimatedDataSectionStructure class

La section avec des données animées.

public class AnimatedDataSectionStructure : OSTypeStructure

Propriétés

NomLa description
Items { get; }Obtient ou définit les structures de section de données animées.
override Key { get; }Obtient la clé de structure.
KeyName { get; set; }Obtient ou définit le nom de la clé.
override Length { get; }Obtient leOSTypeStructure longueur en octets.

Méthodes

NomLa description
virtual GetHeaderLength()Obtient la longueur de l’en-tête.
Save(StreamContainer)Enregistre la structure dans le conteneur de flux spécifié.
SaveWithoutKeyName(StreamContainer)Enregistre la structure dans le conteneur de flux spécifié.

Des champs

NomLa description
const StructureKeyIdentifie la clé de structure d’AnDs.

Exemples

Le code suivant montre comment définir/mettre à jour le temps de retard dans le cadre de la chronologie des données animées.

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

            // Crée l'enregistrement de délai de trame avec une valeur de 100 centi-seconde égale à 1 seconde.
            var frameDelay = new IntegerStructure(new ClassID("FrDl"));
            frameDelay.Value = 100; // définit le temps en centi-secondes.

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

            break;
        }
    }

    image.Save(outputPsd);
}

Voir également