Class ObjectArrayStructure

ObjectArrayStructure class

일반적으로 보유하는 ObjectArrayStructure 클래스를 정의합니다.UnitArrayStructure array. PlLd Resource 및 SoLd Resource. 와 같은 PSD 파일 리소스에 사용됩니다.

public sealed class ObjectArrayStructure : OSTypeStructure

생성자

이름설명
ObjectArrayStructure(string, string, OSTypeStructure[])의 새 인스턴스를 초기화합니다.ObjectArrayStructure 클래스.
ObjectArrayStructure(int, ClassID, ClassID, string, OSTypeStructure[])의 새 인스턴스를 초기화합니다.ObjectArrayStructure 클래스.

속성

이름설명
ClassID { get; set; }개체 배열 클래스 ID를 가져오거나 설정합니다.
ClassName { get; set; }개체 배열 클래스 이름을 가져오거나 설정합니다.
override Key { get; }개체 배열 구조 키를 가져옵니다.
KeyName { get; set; }키 이름을 가져오거나 설정합니다.
override Length { get; }가져오기OSTypeStructure 바이트 길이.
StructureCount { get; }개체 배열 하위 구조 개수를 가져옵니다.
Structures { get; set; }구조 배열의 복사본을 가져오거나 설정합니다.

행동 양식

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

필드

이름설명
const StructureKey‘ObAr’ 구조 키를 식별합니다.

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

또한보십시오