Class BezierKnotRecord
내용물
[
숨다
]BezierKnotRecord class
베지어 매듭 레코드 Class
public class BezierKnotRecord : VectorPathRecord
생성자
이름 | 설명 |
---|---|
BezierKnotRecord() | 의 새 인스턴스를 초기화합니다.BezierKnotRecord 클래스. |
BezierKnotRecord(byte[]) | 의 새 인스턴스를 초기화합니다.BezierKnotRecord 클래스. |
속성
이름 | 설명 |
---|---|
IsClosed { get; set; } | 이 인스턴스가 닫혔는지 여부를 나타내는 값을 가져오거나 설정합니다. |
IsLinked { get; set; } | 이 인스턴스가 연결되었는지 여부를 나타내는 값을 가져오거나 설정합니다. |
IsOpen { get; set; } | 이 인스턴스가 열려 있는지 여부를 나타내는 값을 가져오거나 설정합니다. |
PathPoints { get; set; } | 경로 지점을 가져오거나 설정합니다. |
Points { get; set; } | 포인트를 가져오거나 설정합니다. |
override Type { get; } | 유형을 가져옵니다. |
예
다음 예는 VmskResource 리소스 로드 지원을 보여줍니다. 경로 편집은 어떻게 작동합니까?
[C#]
[Test]
public void TestPsdNet106()
{
string sourceFileName = "Rectangle.psd";
string exportPath = "Rectangle_changed.psd";
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
var resource = GetVmskResource(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("VmskResource 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("VmskResource 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(8039797, 10905190);
initialFillRule.IsFillStartsWithAllPixels = true;
subpathLength.IsClosed = false;
im.Save(exportPath);
}
}
private VmskResource GetVmskResource(PsdImage image)
{
var layer = image.Layers[1];
VmskResource resource = null;
var resources = layer.Resources;
for (int i = 0; i < resources.Length; i++)
{
if (resources[i] is VmskResource)
{
resource = (VmskResource)resources[i];
break;
}
}
if (resource == null)
{
throw new Exception("VmskResource not found");
}
return resource;
}
다음 예는 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;
}