이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

StreamGeometry 클래스

업데이트: 2007년 11월

StreamGeometryContext를 사용하여 설명된 기하 도형을 정의합니다. 이 기하 도형은 PathGeometry에 대한 간단한 대안으로 데이터 바인딩, 애니메이션 또는 수정 기능을 지원하지 않습니다.

네임스페이스:  System.Windows.Media
어셈블리:  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 기능

StreamGeometryFreezable 형식입니다. 고정 및 복제와 같은 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;
        }
    }
}


다음 예제에서는 StreamGeometryStreamGeometryContext를 사용하는 메서드를 만들어 지정된 매개 변수를 기반으로 도형을 정의합니다.

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;
        }
    }
}


이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

Windows Vista

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0에서 지원
이 정보가 도움이 되었습니까?
(1500자 남음)

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
© 2013 Microsoft. All rights reserved.