Class UnitArrayStructure

UnitArrayStructure class

Définit la classe UnitArrayStructure qui contientDouble tableau de valeurs et leur unité de mesure. Il est utilisé dans les ressources du fichier PSD, généralement parObjectArrayStructure .

public sealed class UnitArrayStructure : OSTypeStructure

Constructeurs

NomLa description
UnitArrayStructure(ClassID, UnitTypes, double[])Initialise une nouvelle instance duUnitArrayStructure classe.

Propriétés

NomLa description
override Key { get; }Obtient cette clé de structure de tableau d’unités.
KeyName { get; set; }Obtient ou définit le nom de la clé.
override Length { get; }Obtient leOSTypeStructure longueur en octets.
UnitType { get; set; }Obtient ou définit le type d’unité de mesure duUnitArrayStructure valeurs.
ValueCount { get; }Obtient le nombre de valeurs.
Values { get; set; }Obtient ou définit les valeurs de structure de tableau d’unités.

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 StructureKeyDéfinit le ‘UnFl’UnitArrayStructure clé.

Exemples

Le code suivant illustre la prise en charge des signatures ObAr et 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);
}

Voir également