다음을 통해 공유


CGPathDrawingMode 열거형

정의

그리기 모드.

public enum CGPathDrawingMode
type CGPathDrawingMode = 
상속
CGPathDrawingMode

필드

EOFill 1

짝수 홀수 규칙을 사용하여 경로를 채웁니다.

EOFillStroke 4

짝수 홀수 규칙을 사용하여 경로를 채우고 스트로크합니다.

Fill 0

0이 아닌 권선 규칙을 사용하여 경로를 채웁니다.

FillStroke 3

0이 아닌 권선 규칙을 사용하여 경로를 채우고 스트로크합니다.

Stroke 2

경로를 스트로크합니다.

설명

이 열거형을 사용하면 애플리케이션 개발자가 채우기, 스트로크 또는 둘 다 경로 표시 중에서 선택할 수 있습니다. 또한 개발자는 코어 그래픽 서 있는 "0이 아닌 권선 규칙" 채우기 모드 또는 "짝수 홀수 규칙" 채우기 모드를 사용할지 여부를 선택할 수 있습니다.

"0이 아닌 권선 규칙"과 "짝수 홀수 규칙"은 모두 지점에서 경로 외부로 그려진 선을 고려하여 픽셀을 채울지 여부를 결정합니다.

경로가 시계 방향으로 해당 선을 교차하고 시계 반대 방향으로 횟수가 같으면 "0이 아닌 권선 규칙" 모드가 픽셀을 채우지 않습니다. 시계 방향과 시계 반대 방향 교차의 수가 0이 아닌 경우 점이 경로 내에서 고려되고 채워집니다. 다음 그림과 같이 경로 방향을 중요한 고려 사항으로 만듭니다.

교차된 경로 수가 홀수인 경우 "짝수 홀수" 규칙이 픽셀을 채웁니다. 경로의 방향을 고려하지 않습니다.

다음 예제에서는 더 복잡한 상황을 보여줍니다. 맨 위 경로는 "짝수 홀수 규칙"(EOFillStroke)으로 그려지고 아래쪽은 "0이 아닌 권선 규칙"(FillStroke)으로 채워집니다. 두 경우 모두 경로가 빨간색으로 스트로크되고 녹색으로 채워집니다.

 public override void Draw (RectangleF rect)
{
	base.Draw (rect);

	using (var ctxt = UIGraphics.GetCurrentContext ()) {
		ctxt.ScaleCTM (1, -1);
		ctxt.TranslateCTM (0, -Bounds.Height);
   	DrawPathWithWindingMode (ctxt, Bounds.Height / 2, CGPathDrawingMode.EOFillStroke);
	  DrawPathWithWindingMode (ctxt, 0, CGPathDrawingMode.FillStroke);
		}
}

void DrawPathWithWindingMode (CGContext ctxt, float yOffset, CGPathDrawingMode mode)
{
	var points = new PointF[] {
		new PointF (50, 50),
		new PointF (200, 50),
		new PointF (200, 100),
		new PointF (50, 100),
		new PointF (50, 50),
		new PointF (150, 50),
		new PointF (150, 150),
		new PointF (100, 150),
		new PointF (100, 25)
	};
	points = points.Select (pt => new PointF(pt.X, pt.Y += yOffset)).ToArray();
	ctxt.SetStrokeColor (UIColor.Red.CGColor);
	ctxt.SetFillColor (UIColor.Green.CGColor);
	ctxt.MoveTo (points [0].X, points [0].Y);
	for (var i = 1; i < points.Length; i++) {
		ctxt.AddLineToPoint (points [i].X, points [i].Y);
	}
	ctxt.DrawPath (mode);
}         

적용 대상