Class AnimatedDataSectionResource

AnimatedDataSectionResource class

Animasyonlu Veri Bölümü Eklentisi kaynağı.

public class AnimatedDataSectionResource : ResourceBlock

Özellikleri

İsimTanım
AnimatedDataSection { get; }Animasyonlu veri bölümü yapısını alır veya ayarlar.
override DataSize { get; }Kaynak veri boyutunu bayt cinsinden alır.
ID { get; set; }Kaynak için benzersiz tanımlayıcıyı alır veya ayarlar.
KeyName { get; }Kaynak anahtarı adı.
override MinimalVersion { get; }Gereken minimum PSD sürümünü alır.
Name { get; set; }Kaynak adını alır veya ayarlar. Boyutu çift yapmak için doldurulmuş Pascal dizesi (boş ad iki bayt 0’dan oluşur).
Signature { get; }Kaynak imzasını alır. Her zaman ‘8BIM’ olmalıdır.
Size { get; }Verileri dahil olmak üzere kaynak bloğu boyutunu bayt cinsinden alır.

yöntemler

İsimTanım
Save(StreamContainer)Kaynak bloğunu belirtilen akışa kaydeder.
virtual ValidateValues()Kaynak değerlerini doğrular.

Örnekler

Aşağıdaki kod, animasyonlu verilerin zaman çizelgesi çerçevesindeki gecikme süresinin nasıl ayarlanacağını/güncelleneceğini gösterir.

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

            // 1 saniyeye eşit olan 100 centi-saniye değerinde çerçeve gecikme kaydını oluşturur.
            var frameDelay = new IntegerStructure(new ClassID("FrDl"));
            frameDelay.Value = 100; // zamanı santi saniye olarak ayarla.

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

            break;
        }
    }

    image.Save(outputPsd);
}

Ayrıca bakınız