Class VsmsResource

VsmsResource class

클래스 VsmsResource. 이 리소스에는 벡터 레이어 mask 에 대한 정보가 포함되어 있습니다.

public class VsmsResource : VectorPathDataResource

생성자

이름설명
VsmsResource()의 새 인스턴스를 초기화합니다.VsmsResource 클래스.
VsmsResource(byte[])의 새 인스턴스를 초기화합니다.VsmsResource 클래스.

속성

이름설명
IsDisabled { get; set; }이 인스턴스가 비활성화되었는지 여부를 나타내는 값을 가져오거나 설정합니다.
IsInverted { get; set; }이 인스턴스가 반전되었는지 여부를 나타내는 값을 가져오거나 설정합니다.
IsNotLinked { get; set; }이 인스턴스가 연결되지 않았는지 여부를 나타내는 값을 가져오거나 설정합니다.
override Key { get; }레이어 리소스 키를 가져옵니다.
override Length { get; }레이어 리소스 길이를 바이트 단위로 가져옵니다.
Paths { get; set; }경로 레코드를 가져오거나 설정합니다.
override PsdVersion { get; }psd 버전을 가져옵니다.
override Signature { get; }서명을 받습니다.
Version { get; set; }버전을 가져오거나 설정합니다.

행동 양식

이름설명
override Save(StreamContainer, int)리소스를 지정된 스트림 컨테이너에 저장합니다.
override ToString()반환String 이 instance. 를 나타냅니다.

필드

이름설명
const TypeToolKey유형 도구 정보 키입니다.

다음 예는 VsmsResource 리소스 로드 지원을 보여줍니다. 경로 편집은 어떻게 작동합니까?

[C#]

[Test]
public void TestPsdNet140()
{
    // Vsms리소스 지원
    string sourceFileName = "EmptyRectangle.psd";
    string exportPath = "EmptyRectangle_changed.psd";
    var im = (PsdImage)Image.Load(sourceFileName);
    using (im)
    {
        var resource = GetVsmsResource(im);
        // 독서
        if (resource.IsDisabled != false ||
            resource.IsInverted != false ||
            resource.IsNotLinked != false ||
            resource.Paths.Length != 7 ||
            resource.Paths[0].Type != VectorPathType.PathFillRuleRecord ||
            resource.Paths[1].Type != VectorPathType.InitialFillRuleRecord ||
            resource.Paths[2].Type != VectorPathType.ClosedSubpathLengthRecord ||
            resource.Paths[3].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
            resource.Paths[4].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
            resource.Paths[5].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
            resource.Paths[6].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked)
        {
            throw new Exception("VsmsResource was read wrong");
        }

        var pathFillRule = (PathFillRuleRecord)resource.Paths[0];
        var initialFillRule = (InitialFillRuleRecord)resource.Paths[1];
        var subpathLength = (LengthRecord)resource.Paths[2];

        // 경로 채우기 규칙에는 추가 정보가 포함되어 있지 않습니다.
        if (pathFillRule.Type != VectorPathType.PathFillRuleRecord ||
        initialFillRule.Type != VectorPathType.InitialFillRuleRecord ||
        initialFillRule.IsFillStartsWithAllPixels != false ||
        subpathLength.Type != VectorPathType.ClosedSubpathLengthRecord ||
        subpathLength.IsClosed != true ||
        subpathLength.IsOpen != false)
        {
            throw new Exception("VsmsResource paths were read wrong");
        }

        // 편집
        resource.IsDisabled = true;
        resource.IsInverted = true;
        resource.IsNotLinked = true;
        var bezierKnot = (BezierKnotRecord)resource.Paths[3];
        bezierKnot.Points[0] = new Point(0, 0);
        bezierKnot = (BezierKnotRecord)resource.Paths[4];
        bezierKnot.Points[0] = new Point(8039798, 10905191);
        initialFillRule.IsFillStartsWithAllPixels = true;
        subpathLength.IsClosed = false;
        im.Save(exportPath);
    }
}

private VsmsResource GetVsmsResource(PsdImage image)
{
    var layer = image.Layers[1];
    VsmsResource resource = null;
    var resources = layer.Resources;
    for (int i = 0; i < resources.Length; i++)
    {
        if (resources[i] is VsmsResource)
        {
            resource = (VsmsResource)resources[i];
            break;
        }
    }
    if (resource == null)
    {
        throw new Exception("VsmsResource not found");
    }
    return resource;
}

또한보십시오