Class ObjectArrayStructure

ObjectArrayStructure class

Definisce la classe ObjectArrayStructure che di solito contieneUnitArrayStructure array. Viene utilizzato nelle risorse del file PSD, come Risorsa PlLd e Risorsa SoLd.

public sealed class ObjectArrayStructure : OSTypeStructure

Costruttori

NomeDescrizione
ObjectArrayStructure(string, string, OSTypeStructure[])Inizializza una nuova istanza diObjectArrayStructure classe.
ObjectArrayStructure(int, ClassID, ClassID, string, OSTypeStructure[])Inizializza una nuova istanza diObjectArrayStructure classe.

Proprietà

NomeDescrizione
ClassID { get; set; }Ottiene o imposta l’ID classe dell’array di oggetti.
ClassName { get; set; }Ottiene o imposta il nome della classe dell’array di oggetti.
override Key { get; }Ottiene la chiave della struttura dell’array di oggetti.
KeyName { get; set; }Ottiene o imposta il nome della chiave.
override Length { get; }Ottiene ilOSTypeStructure lunghezza in byte.
StructureCount { get; }Ottiene il conteggio della sottostruttura dell’array di oggetti.
Structures { get; set; }Ottiene o imposta una copia di un array di strutture.

Metodi

NomeDescrizione
virtual GetHeaderLength()Ottiene la lunghezza dell’intestazione.
Save(StreamContainer)Salva la struttura nel contenitore del flusso specificato.
SaveWithoutKeyName(StreamContainer)Salva la struttura nel contenitore del flusso specificato.

Campi

NomeDescrizione
const StructureKeyIdentifica la chiave della struttura ‘ObAr’.

Esempi

Il codice seguente dimostra il supporto delle firme ObAr e UnFl.

[C#]

void AssertAreEqual(object actual, object expected)
{
    if (!object.Equals(actual, expected))
    {
        throw new FormatException(string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
    }
}

var sourceFilePath = "LayeredSmartObjects8bit2.psd";
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
    UnitArrayStructure verticalStructure = null;
    foreach (Layer imageLayer in image.Layers)
    {
        foreach (var imageResource in imageLayer.Resources)
        {
            var resource = imageResource as PlLdResource;
            if (resource != null && resource.IsCustom)
            {
                foreach (OSTypeStructure structure in resource.Items)
                {
                    if (structure.KeyName.ClassName == "customEnvelopeWarp")
                    {
                        AssertAreEqual(typeof(DescriptorStructure), structure.GetType());
                        var custom = (DescriptorStructure)structure;
                        AssertAreEqual(custom.Structures.Length, 1);
                        var mesh = custom.Structures[0];
                        AssertAreEqual(typeof(ObjectArrayStructure), mesh.GetType());
                        var meshObjectArray = (ObjectArrayStructure)mesh;
                        AssertAreEqual(meshObjectArray.Structures.Length, 2);
                        var vertical = meshObjectArray.Structures[1];
                        AssertAreEqual(typeof(UnitArrayStructure), vertical.GetType());
                        verticalStructure = (UnitArrayStructure)vertical;
                        AssertAreEqual(verticalStructure.UnitType, UnitTypes.Pixels);
                        AssertAreEqual(verticalStructure.ValueCount, 16);

                        break;
                    }
                }
            }
        }
    }

    AssertAreEqual(true, verticalStructure != null);
}

Guarda anche