Class AnimatedDataSectionStructure

AnimatedDataSectionStructure class

La sección con datos animados.

public class AnimatedDataSectionStructure : OSTypeStructure

Propiedades

NombreDescripción
Items { get; }Obtiene o establece las estructuras de la sección de datos animados.
override Key { get; }Obtiene la clave de estructura.
KeyName { get; set; }Obtiene o establece el nombre de la clave.
override Length { get; }Obtiene elOSTypeStructure longitud en bytes.

Métodos

NombreDescripción
virtual GetHeaderLength()Obtiene la longitud del encabezado.
Save(StreamContainer)Guarda la estructura en el contenedor de flujo especificado.
SaveWithoutKeyName(StreamContainer)Guarda la estructura en el contenedor de flujo especificado.

Campos

NombreDescripción
const StructureKeyIdentifica la clave de estructura de AnDs.

Ejemplos

El siguiente código muestra cómo configurar/actualizar el tiempo de retraso en el marco de la línea de tiempo de los datos animados.

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

            // Crea el registro de retardo de cuadro con un valor de 100 centisegundos que es igual a 1 segundo.
            var frameDelay = new IntegerStructure(new ClassID("FrDl"));
            frameDelay.Value = 100; // establece el tiempo en centisegundos.

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

            break;
        }
    }

    image.Save(outputPsd);
}

Ver también