Class UnitArrayStructure

UnitArrayStructure class

보유하고 있는 UnitArrayStructure 클래스를 정의합니다.Double 값 배열 및 해당 측정 단위. 일반적으로 PSD 파일 리소스에 사용됩니다.ObjectArrayStructure .

public sealed class UnitArrayStructure : OSTypeStructure

생성자

이름설명
UnitArrayStructure(ClassID, UnitTypes, double[])의 새 인스턴스를 초기화합니다.UnitArrayStructure 클래스.

속성

이름설명
override Key { get; }이 단위 배열 구조 키를 가져옵니다.
KeyName { get; set; }키 이름을 가져오거나 설정합니다.
override Length { get; }가져오기OSTypeStructure 바이트 길이.
UnitType { get; set; }의 측정 단위 유형을 가져오거나 설정합니다.UnitArrayStructure 값.
ValueCount { get; }값 개수를 가져옵니다.
Values { get; set; }단위 배열 구조 값을 가져오거나 설정합니다.

행동 양식

이름설명
virtual GetHeaderLength()헤더 길이를 가져옵니다.
Save(StreamContainer)지정된 스트림 컨테이너에 구조를 저장합니다.
SaveWithoutKeyName(StreamContainer)지정된 스트림 컨테이너에 구조를 저장합니다.

필드

이름설명
const StructureKey‘UnFl’을 정의합니다.UnitArrayStructure 키.

다음 코드는 ObAr 및 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);
}

또한보십시오