StreamGeometry 클래스
업데이트: 2007년 11월
StreamGeometryContext를 사용하여 설명된 기하 도형을 정의합니다. 이 기하 도형은 PathGeometry에 대한 간단한 대안으로 데이터 바인딩, 애니메이션 또는 수정 기능을 지원하지 않습니다.
어셈블리: PresentationCore(PresentationCore.dll)
XAML의 XMLNS: http://schemas.microsoft.com/winfx/xaml/presentation
[TypeConverterAttribute(typeof(GeometryConverter))] public sealed class StreamGeometry : Geometry
/** @attribute TypeConverterAttribute(GeometryConverter) */ public final class StreamGeometry extends Geometry
public final class StreamGeometry extends Geometry
<StreamGeometry .../>
<object property="moveAndDrawCommands"/>
moveAndDrawCommands하나 이상의 move 및 draw 명령입니다. 경로 태그 구문을 참조하십시오.
복잡한 기하 도형을 설명해야 하지만 데이터 바인딩, 애니메이션 및 수정 기능 지원에 따른 오버헤드를 원하지 않는 경우 StreamGeometry를 사용합니다. StreamGeometry 클래스는 효율성이 높아 표시기를 설명하는 데 적합합니다.
Transform, 스트로크되지 않은 세그먼트 또는 채워지지 않은 세그먼트를 포함하는 StreamGeometry는 serialize할 수 없습니다.
Freezable 기능
StreamGeometry는 Freezable 형식입니다. 고정 및 복제와 같은 Freezable 기능에 대한 자세한 내용은 Freezable 개체 개요를 참조하십시오.
StreamGeometry는 도형을 만들기 위해 PathGeometry 대신 사용할 수 있는 간단한 클래스입니다. 복잡한 기하 도형을 설명해야 하지만 데이터 바인딩, 애니메이션 및 수정을 지원하는 오버헤드를 원하지 않는 경우 StreamGeometry를 사용합니다. 예를 들어 StreamGeometry 클래스는 효율성으로 인해 표시기(adorner)를 설명하기에 적합합니다.
다음 예제에서는 특성 구문을 사용하여 XAML에서 삼각형 StreamGeometry를 만듭니다.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel> <Path Data="F0 M10,100 L100,100 100,50Z" StrokeThickness="1" Stroke="Black"/> </StackPanel> </Page>
StreamGeometry 특성 구문에 대한 자세한 내용은 경로 태그 구문 페이지를 참조하십시오.
다음 예제에서는 StreamGeometry를 사용하여 코드로 삼각형을 정의합니다. 먼저 이 예제에서는 StreamGeometry를 만든 다음 StreamGeometryContext를 가져와 이를 통해 삼각형을 설명합니다.
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Shapes; namespace SDKSample { // Use StreamGeometry with StreamGeometryContext to define a triangle shape. public partial class StreamGeometryTriangleExample : Page { public StreamGeometryTriangleExample() { // Create a path to draw a geometry with. Path myPath = new Path(); myPath.Stroke = Brushes.Black; myPath.StrokeThickness = 1; // Create a StreamGeometry to use to specify myPath. StreamGeometry geometry = new StreamGeometry(); geometry.FillRule = FillRule.EvenOdd; // Open a StreamGeometryContext that can be used to describe this StreamGeometry // object's contents. using (StreamGeometryContext ctx = geometry.Open()) { // Begin the triangle at the point specified. Notice that the shape is set to // be closed so only two lines need to be specified below to make the triangle. ctx.BeginFigure(new Point(10, 100), true /* is filled */, true /* is closed */); // Draw a line to the next specified point. ctx.LineTo(new Point(100, 100), true /* is stroked */, false /* is smooth join */); // Draw another line to the next specified point. ctx.LineTo(new Point(100, 50), true /* is stroked */, false /* is smooth join */); } // Freeze the geometry (make it unmodifiable) // for additional performance benefits. geometry.Freeze(); // Specify the shape (triangle) of the Path using the StreamGeometry. myPath.Data = geometry; // Add path shape to the UI. StackPanel mainPanel = new StackPanel(); mainPanel.Children.Add(myPath); this.Content = mainPanel; } } }
다음 예제에서는 StreamGeometry 및 StreamGeometryContext를 사용하는 메서드를 만들어 지정된 매개 변수를 기반으로 도형을 정의합니다.
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Shapes; namespace SDKSample { public partial class StreamGeometryExample : Page { public StreamGeometryExample() { // Create a path to draw a geometry with. Path myPath = new Path(); myPath.Stroke = Brushes.Black; myPath.StrokeThickness = 1; // Create a StreamGeometry to use to specify myPath. StreamGeometry theGeometry = BuildRegularPolygon(new Point(200, 200), 200, 8, 0); theGeometry.FillRule = FillRule.EvenOdd; // Freeze the geometry (make it unmodifiable) // for additional performance benefits. theGeometry.Freeze(); // Use the StreamGeometry returned by the BuildRegularPolygon to // specify the shape of the path. myPath.Data = theGeometry; // Add path shape to the UI. StackPanel mainPanel = new StackPanel(); mainPanel.Children.Add(myPath); this.Content = mainPanel; } StreamGeometry BuildRegularPolygon(Point c, double r, int numSides, double offsetDegree) { // c is the center, r is the radius, // numSides the number of sides, offsetDegree the offset in Degrees. // Do not add the last point. StreamGeometry geometry = new StreamGeometry(); using (StreamGeometryContext ctx = geometry.Open()) { ctx.BeginFigure(new Point(), true /* is filled */, true /* is closed */); double step = 2 * Math.PI / Math.Max(numSides, 3); Point cur = c; double a = Math.PI * offsetDegree / 180.0; for (int i = 0; i < numSides; i++, a += step) { cur.X = c.X + r * Math.Cos(a); cur.Y = c.Y + r * Math.Sin(a); ctx.LineTo(cur, true /* is stroked */, false /* is smooth join */); } } return geometry; } } }
Windows Vista
.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.