Class UnitArrayStructure

UnitArrayStructure class

Define la clase UnitArrayStructure que contieneDouble matriz de valores y su unidad de medida. Se utiliza en los recursos del archivo PSD, generalmente porObjectArrayStructure .

public sealed class UnitArrayStructure : OSTypeStructure

Constructores

NombreDescripción
UnitArrayStructure(ClassID, UnitTypes, double[])Inicializa una nueva instancia delUnitArrayStructure clase.

Propiedades

NombreDescripción
override Key { get; }Obtiene esta clave de estructura de matriz de unidades.
KeyName { get; set; }Obtiene o establece el nombre de la clave.
override Length { get; }Obtiene elOSTypeStructure longitud en bytes.
UnitType { get; set; }Obtiene o establece el tipo de unidad de medida delUnitArrayStructure valores.
ValueCount { get; }Obtiene el valor contador.
Values { get; set; }Obtiene o establece los valores de la estructura de la matriz de unidades.

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 StructureKeyDefine el ‘UnFl’UnitArrayStructure clave.

Ejemplos

El código siguiente demuestra la compatibilidad con las firmas ObAr y 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);
}

Ver también