Geometriye Genel Bakış
bu genel bakışta, şekilleri açıklayan Windows Presentation Foundation (WPF) sınıflarının nasıl kullanılacağı açıklanmaktadır Geometry . Bu konu ayrıca nesneler ve öğeler arasındaki farkları da karşıtlardır GeometryShape .
Geometri nedir?
, Geometry Ve gibi bu sınıftan türetilen sınıflar ve EllipseGeometryPathGeometryCombinedGeometry bir 2B şeklinin geometrisini açıklamanıza olanak tanır. Bu geometrik açıklamaların birçok kullanımı vardır. bu tür, ekrana boyamak için bir şekil tanımlama veya isabet testi ile klip bölgelerini tanımlama. Bir animasyon yolu tanımlamak için geometriyi bile kullanabilirsiniz.
Geometry nesneler, dikdörtgenler ve daireler gibi basit ya da iki veya daha fazla geometri nesnesinden oluşturulan bileşik olabilir. Ve sınıflarını kullanarak daha karmaşık geometriler oluşturulabilir PathGeometry ve bu, StreamGeometry yay ve eğrileri açıklamanıza olanak sağlar.
, Bir Geometry türü olduğundan, FreezableGeometry nesneler birkaç özel özellik sağlar: Geometryolarak, birden fazla nesne arasında paylaşılan, performansı artırmak için salt okuma, klonlanmış ve iş parçacığı açısından güvenli hale getirilebilir. Nesneler tarafından sunulan farklı özellikler hakkında daha fazla bilgi için Freezable bkz. Freezable.
Geometriler ve şekiller
GeometryVe Shape sınıfları, her Ikisi de 2B şekilleri (karşılaştırma EllipseGeometry ve örnek) tanımladıklarından benzerdir Ellipse , ancak önemli farklılıklar vardır.
Bir tane için sınıf öğesinden devralınırken sınıf sınıfından Geometry devralır FreezableShapeFrameworkElement . Öğeler olduklarından nesneler, nesneleri Shape işleyebilir ve Düzen sistemine katılabilir, ancak Geometry nesneler yapılamaz.
Nesneleri Shape nesnelerden daha kolay kullanılabilir olsa da Geometry , Geometry nesneler daha çok yönlüdür. Shape2B grafikleri işlemek için bir nesne kullanıldığında bir Geometry nesne, 2B grafik için geometrik bölgeyi tanımlamak, kırpma için bir bölge tanımlamak veya isabet testi için bir bölge tanımlamak üzere kullanılabilir.
Yol şekli
Bir Shape , Path sınıfı, Geometry içeriğini anlatmak için aslında bir kullanır. DataÖğesinin özelliğini ile ayarlayıp ve PathGeometryFill özelliklerini ayarlayarak Stroke bir oluşturabilirsiniz Geometry .
Geometriyi alan ortak özellikler
Önceki bölümlerde, geometri nesnelerinin şekil çizme, hareketlendirme ve kırpma gibi çeşitli amaçlar için diğer nesnelerle birlikte kullanılabileceği belirtiliyor. Aşağıdaki tabloda, bir nesnesi alan özellikleri olan birkaç sınıf listelenmektedir Geometry .
| Tür | Özellik |
|---|---|
| DoubleAnimationUsingPath | PathGeometry |
| DrawingGroup | ClipGeometry |
| GeometryDrawing | Geometry |
| Path | Data |
| UIElement | Clip |
Basit geometri türleri
Tüm geometrilerin temel sınıfı soyut sınıftır Geometry . Sınıfından türeten sınıflar Geometry kabaca üç kategoride gruplandırılabilir: basit geometriler, yol geometrileri ve bileşik geometriler.
Basit geometri sınıfları, LineGeometry , RectangleGeometry ve EllipseGeometry ve çizgileri, dikdörtgenler ve daireler gibi temel geometrik şekiller oluşturmak için kullanılır.
Bir, LineGeometry çizginin başlangıç noktası ve bitiş noktası belirtilerek tanımlanır.
, RectangleGeometryRect Göreli konumunu ve yüksekliğini ve genişliğini belirten bir yapıyla tanımlanır. Ve özelliklerini ayarlayarak yuvarlak bir dikdörtgen oluşturabilirsiniz RadiusXRadiusY .
Bir EllipseGeometry orta nokta, bir x-radius ve y-Radius tarafından tanımlanır. Aşağıdaki örneklerde, işleme ve kırpma için basit geometrilerin nasıl oluşturulacağı gösterilmektedir.
Aynı şekillerin yanı sıra daha karmaşık şekiller bir veya kullanılarak oluşturulabilir, PathGeometry ancak bu sınıflar, temel geometrik şekillerin oluşturulması için daha basit bir yol sağlar.
Aşağıdaki örnek, oluşturma ve oluşturma işlemlerinin nasıl yapılacağını gösterir LineGeometry . Daha önce belirtildiği gibi, bir Geometry nesne kendisini çizemez, bu nedenle örnek Path satırı işlemek için bir şekil kullanır. Bir çizginin alanı olmadığından, Fill öğesinin özelliğini ayarlamanın Path hiçbir etkisi olmaz; bunun yerine yalnızca Stroke ve StrokeThickness özellikleri belirtilir. Aşağıdaki çizimde, örneğin çıktısı gösterilmektedir.

(10, 20) ile (100.130) çizilmiş bir LineGeometry
<Path Stroke="Black" StrokeThickness="1" >
<Path.Data>
<LineGeometry StartPoint="10,20" EndPoint="100,130" />
</Path.Data>
</Path>
LineGeometry myLineGeometry = new LineGeometry();
myLineGeometry.StartPoint = new Point(10,20);
myLineGeometry.EndPoint = new Point(100,130);
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myLineGeometry;
Dim myLineGeometry As New LineGeometry()
myLineGeometry.StartPoint = New Point(10,20)
myLineGeometry.EndPoint = New Point(100,130)
Dim myPath As New Path()
myPath.Stroke = Brushes.Black
myPath.StrokeThickness = 1
myPath.Data = myLineGeometry
Sonraki örnek, oluşturma ve işleme işlemlerinin nasıl yapılacağını gösterir EllipseGeometry . Örneklerin, ' ın CenterEllipseGeometry nokta olarak ayarlandığını 50,50 ve x-radius ve y-Radius, 50 100 çapına sahip bir daire oluşturan olarak ayarlanır. Elipsin iç kısmı, bu durumda yol öğesinin Fill özelliğine bir değer atanarak boyanır Gold . Aşağıdaki çizimde, örneğin çıktısı gösterilmektedir.

EllipseGeometry (50, 50) çizilmiş bir
<Path Fill="Gold" Stroke="Black" StrokeThickness="1">
<Path.Data>
<EllipseGeometry Center="50,50" RadiusX="50" RadiusY="50" />
</Path.Data>
</Path>
EllipseGeometry myEllipseGeometry = new EllipseGeometry();
myEllipseGeometry.Center = new Point(50, 50);
myEllipseGeometry.RadiusX = 50;
myEllipseGeometry.RadiusY = 50;
Path myPath = new Path();
myPath.Fill = Brushes.Gold;
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myEllipseGeometry;
Dim myEllipseGeometry As New EllipseGeometry()
myEllipseGeometry.Center = New Point(50, 50)
myEllipseGeometry.RadiusX = 50
myEllipseGeometry.RadiusY = 50
Dim myPath As New Path()
myPath.Fill = Brushes.Gold
myPath.Stroke = Brushes.Black
myPath.StrokeThickness = 1
myPath.Data = myEllipseGeometry
Aşağıdaki örnek, oluşturma ve oluşturma işlemlerinin nasıl yapılacağını gösterir RectangleGeometry . Dikdörtgenin konumu ve boyutları bir yapı tarafından tanımlanır Rect . Konum 50,50 ve yükseklik ve genişlik her ikisi de 25 bir kare oluşturur. Aşağıdaki çizimde, örneğin çıktısı gösterilmektedir.

50, 50 ' de çizilmiş bir RectangleGeometry
<Path Fill="LemonChiffon" Stroke="Black" StrokeThickness="1">
<Path.Data>
<RectangleGeometry Rect="50,50,25,25" />
</Path.Data>
</Path>
RectangleGeometry myRectangleGeometry = new RectangleGeometry();
myRectangleGeometry.Rect = new Rect(50,50,25,25);
Path myPath = new Path();
myPath.Fill = Brushes.LemonChiffon;
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myRectangleGeometry;
Dim myRectangleGeometry As New RectangleGeometry()
myRectangleGeometry.Rect = New Rect(50,50,25,25)
Dim myPath As New Path()
myPath.Fill = Brushes.LemonChiffon
myPath.Stroke = Brushes.Black
myPath.StrokeThickness = 1
myPath.Data = myRectangleGeometry
Aşağıdaki örnek, bir EllipseGeometry görüntü için klip bölgesi olarak nasıl kullanılacağını gösterir. Bir Image nesne Width 200 ve 150 ile tanımlanır Height . Bir EllipseGeometryRadiusX değeri 100, RadiusY 75 değeri ve Center 100, 75 değeri Clip görüntünün özelliğine ayarlanır. Yalnızca elips alanının içindeki görüntünün bir kısmı görüntülenir. Aşağıdaki çizimde, örneğin çıktısı gösterilmektedir.

Görüntü denetimini kırpmak için kullanılan bir EllipseGeometry
<Image
Source="sampleImages\Waterlilies.jpg"
Width="200" Height="150" HorizontalAlignment="Left">
<Image.Clip>
<EllipseGeometry
RadiusX="100"
RadiusY="75"
Center="100,75"/>
</Image.Clip>
</Image>
// Create the image to clip.
Image myImage = new Image();
Uri imageUri =
new Uri(@"C:\\Documents and Settings\\All Users\\Documents\My Pictures\\Sample Pictures\\Water lilies.jpg", UriKind.Relative);
myImage.Source = new BitmapImage(imageUri);
myImage.Width = 200;
myImage.Height = 150;
myImage.HorizontalAlignment = HorizontalAlignment.Left;
// Use an EllipseGeometry to define the clip region.
EllipseGeometry myEllipseGeometry = new EllipseGeometry();
myEllipseGeometry.Center = new Point(100, 75);
myEllipseGeometry.RadiusX = 100;
myEllipseGeometry.RadiusY = 75;
myImage.Clip = myEllipseGeometry;
' Create the image to clip.
Dim myImage As New Image()
Dim imageUri As New Uri("C:\\Documents and Settings\\All Users\\Documents\My Pictures\\Sample Pictures\\Water lilies.jpg", UriKind.Relative)
myImage.Source = New BitmapImage(imageUri)
myImage.Width = 200
myImage.Height = 150
myImage.HorizontalAlignment = HorizontalAlignment.Left
' Use an EllipseGeometry to define the clip region.
Dim myEllipseGeometry As New EllipseGeometry()
myEllipseGeometry.Center = New Point(100, 75)
myEllipseGeometry.RadiusX = 100
myEllipseGeometry.RadiusY = 75
myImage.Clip = myEllipseGeometry
Yol geometrileri
PathGeometrySınıfı ve hafif eşdeğeri StreamGeometry olan sınıfı, yaylar, eğrilerden ve satırlardan oluşan birden çok karmaşık rakamı açıklama sağlar.
PathGeometryPathFigure Her bir şekil içinde ayrı bir şekil açıkladığı için, bir, bir nesne koleksiyonudur PathGeometry . Her biri PathFigure bir veya daha fazla nesneden oluşur PathSegment ve her biri, bir şeklin segmentini tanımlar.
Birçok segment türü vardır.
| Segment türü | Açıklama | Örnek |
|---|---|---|
| ArcSegment | İki punto arasında elips bir yay oluşturur. | Elips bir yay oluşturun. |
| BezierSegment | İki punto arasında üçüncü dereceden Bezier eğrisi oluşturur. | Üçüncü dereceden Bezier eğrisi oluşturun. |
| LineSegment | İki noktayla bir çizgi oluşturur. | PathGeometry İçinde LineSegment Oluşturma |
| PolyBezierSegment | Üçüncü dereceden Bezier eğrileri dizisi oluşturur. | PolyBezierSegmentTür sayfasına bakın. |
| PolyLineSegment | Bir dizi satır oluşturur. | PolyLineSegmentTür sayfasına bakın. |
| PolyQuadraticBezierSegment | İkinci dereceden Bezier eğrileri serisi oluşturur. | Sayfasına bakın PolyQuadraticBezierSegment . |
| QuadraticBezierSegment | İkinci dereceden Bezier eğrisi oluşturur. | Ikinci dereceden Bezier eğrisi oluşturun. |
İçindeki segmentler, PathFigure her segmentin bir sonraki segmentin başlangıç noktası olan tek bir geometrik şekle birleştirilir. StartPointÖğesinin özelliği, PathFigure ilk segmentin çizilme noktasını belirtir. Sonraki her segment, önceki segmentin bitiş noktasında başlar. Örneğin, öğesinden öğesine dikey bir çizgi 10,50 , 10,150StartPoint özelliği olarak ayarlanarak 10,50 ve bir LineSegment özellik ayarı ile oluşturarak tanımlanabilir Point10,150 .
Aşağıdaki örnek, PathGeometry ile tek bir içeren basit bir PathFigure öğe oluşturur LineSegment ve bunu bir öğesi kullanarak görüntüler Path . PathFigureNesnesi StartPoint olarak ayarlanır 10,20 ve bir LineSegment bitiş noktasıyla tanımlanır 100,130 . Aşağıdaki çizimde PathGeometry Bu örnek tarafından oluşturulan gösterilmektedir.

Tek bir LineSegment içeren bir PathGeometry
<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="10,20">
<PathFigure.Segments>
<LineSegment Point="100,130"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
// Create a figure that describes a
// line from (10,20) to (100,130).
PathFigure myPathFigure = new PathFigure();
myPathFigure.StartPoint = new Point(10,20);
myPathFigure.Segments.Add(
new LineSegment(new Point(100,130),
true /* IsStroked */ ));
/// Create a PathGeometry to contain the figure.
PathGeometry myPathGeometry = new PathGeometry();
myPathGeometry.Figures.Add(myPathFigure);
// Display the PathGeometry.
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myPathGeometry;
' Create a figure that describes a
' line from (10,20) to (100,130).
Dim myPathFigure As New PathFigure()
myPathFigure.StartPoint = New Point(10,20)
myPathFigure.Segments.Add(New LineSegment(New Point(100,130), True)) ' IsStroked
''' Create a PathGeometry to contain the figure.
Dim myPathGeometry As New PathGeometry()
myPathGeometry.Figures.Add(myPathFigure)
' Display the PathGeometry.
Dim myPath As New Path()
myPath.Stroke = Brushes.Black
myPath.StrokeThickness = 1
myPath.Data = myPathGeometry
Bu örnekte, önceki örnekle karşı daha fazla değer vardır LineGeometry . İçin kullanılan söz dizimi, PathGeometry basit bir için kullanılandan çok daha ayrıntılıdır LineGeometry ve bu durumda sınıfın kullanılması daha anlamlı olabilir LineGeometry , ancak öğesinin ayrıntılı sözdizimi, PathGeometry son derece karmaşık ve karmaşık geometrik bölgelere izin verir.
Daha karmaşık geometriler, nesnelerin bir birleşimi kullanılarak oluşturulabilir PathSegment .
Sonraki örnekte BezierSegmentLineSegment şekil oluşturmak için bir,, ve kullanılır ArcSegment . Örnek ilk olarak dört nokta tanımlayarak bir üçüncü dereceden Bezier eğrisi oluşturur: önceki segmentin bitiş noktası, bir uç nokta ( Point3 ) ve iki denetim noktası (ve) olan bir başlangıç noktası Point1Point2 . Üçüncü dereceden Bezier eğrisinin iki denetim noktası, platformunuza çekmenin tutmanın gibi davranır, aksi takdirde kendi kendine doğru bir çizgi olmak üzere bir eğri üretir. İlk denetim noktası, Point1 eğrinin başlangıç bölümünü etkiler; ikinci denetim noktası, Point2 eğrinin bitiş bölümünü etkiler.
Örnek daha sonra, LineSegmentBezierSegment özelliği tarafından belirtilen noktadan önce gelen bitiş noktası arasına çizilmiş bir ekler LineSegment .
Örnek daha sonra ArcSegment , LineSegment özelliği tarafından belirtilen noktadan önce gelen bitiş noktasından çizilmiş bir ekler Point . Örnek ayrıca, yayı x ve y-radius ( Size ), bir döndürme açısı ( RotationAngle ), elde edilen yay açısının ne kadar büyük olması gerektiğini belirten bir bayrak ( IsLargeArc ) ve yayı çizilen yönü belirten bir değer () belirtir SweepDirection . Aşağıdaki çizimde bu örnek tarafından oluşturulan Şekil gösterilmektedir.

PathGeometry
<Path Stroke="Black" StrokeThickness="1" >
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="10,50">
<PathFigure.Segments>
<BezierSegment
Point1="100,0"
Point2="200,200"
Point3="300,100"/>
<LineSegment Point="400,100" />
<ArcSegment
Size="50,50" RotationAngle="45"
IsLargeArc="True" SweepDirection="Clockwise"
Point="200,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
// Create a figure.
PathFigure myPathFigure = new PathFigure();
myPathFigure.StartPoint = new Point(10,50);
myPathFigure.Segments.Add(
new BezierSegment(
new Point(100,0),
new Point(200,200),
new Point(300,100),
true /* IsStroked */ ));
myPathFigure.Segments.Add(
new LineSegment(
new Point(400,100),
true /* IsStroked */ ));
myPathFigure.Segments.Add(
new ArcSegment(
new Point(200,100),
new Size(50,50),
45,
true, /* IsLargeArc */
SweepDirection.Clockwise,
true /* IsStroked */ ));
/// Create a PathGeometry to contain the figure.
PathGeometry myPathGeometry = new PathGeometry();
myPathGeometry.Figures.Add(myPathFigure);
// Display the PathGeometry.
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myPathGeometry;
' Create a figure.
Dim myPathFigure As New PathFigure()
myPathFigure.StartPoint = New Point(10,50)
myPathFigure.Segments.Add(New BezierSegment(New Point(100,0), New Point(200,200), New Point(300,100), True)) ' IsStroked
myPathFigure.Segments.Add(New LineSegment(New Point(400,100), True)) ' IsStroked
myPathFigure.Segments.Add(New ArcSegment(New Point(200,100), New Size(50,50), 45, True, SweepDirection.Clockwise, True)) ' IsStroked - IsLargeArc
''' Create a PathGeometry to contain the figure.
Dim myPathGeometry As New PathGeometry()
myPathGeometry.Figures.Add(myPathFigure)
' Display the PathGeometry.
Dim myPath As New Path()
myPath.Stroke = Brushes.Black
myPath.StrokeThickness = 1
myPath.Data = myPathGeometry
Daha karmaşık geometriler, bir içinde birden çok nesne kullanılarak oluşturulabilir PathFigurePathGeometry .
Aşağıdaki örnek, her PathGeometry biri birden çok nesne içeren iki nesne içeren bir PathFigurePathSegment oluşturur. Yukarıdaki PathFigure örnekteki ve ve ile PathFigure olan bir PolyLineSegmentQuadraticBezierSegment kullanılmıştır. bir PolyLineSegment nokta dizisiyle tanımlanır ve bir QuadraticBezierSegment denetim noktası ve bir bitiş noktası ile tanımlanır. Aşağıdaki çizimde bu örnek tarafından oluşturulan şekil gösterilmiştir.

Birden çok şekilde PathGeometry
<Path Stroke="Black" StrokeThickness="1" >
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="10,50">
<PathFigure.Segments>
<BezierSegment
Point1="100,0"
Point2="200,200"
Point3="300,100"/>
<LineSegment Point="400,100" />
<ArcSegment
Size="50,50" RotationAngle="45"
IsLargeArc="True" SweepDirection="Clockwise"
Point="200,100"/>
</PathFigure.Segments>
</PathFigure>
<PathFigure StartPoint="10,100">
<PathFigure.Segments>
<PolyLineSegment Points="50,100 50,150" />
<QuadraticBezierSegment Point1="200,200" Point2="300,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
PathGeometry myPathGeometry = new PathGeometry();
// Create a figure.
PathFigure pathFigure1 = new PathFigure();
pathFigure1.StartPoint = new Point(10,50);
pathFigure1.Segments.Add(
new BezierSegment(
new Point(100,0),
new Point(200,200),
new Point(300,100),
true /* IsStroked */ ));
pathFigure1.Segments.Add(
new LineSegment(
new Point(400,100),
true /* IsStroked */ ));
pathFigure1.Segments.Add(
new ArcSegment(
new Point(200,100),
new Size(50,50),
45,
true, /* IsLargeArc */
SweepDirection.Clockwise,
true /* IsStroked */ ));
myPathGeometry.Figures.Add(pathFigure1);
// Create another figure.
PathFigure pathFigure2 = new PathFigure();
pathFigure2.StartPoint = new Point(10,100);
Point[] polyLinePointArray =
new Point[]{ new Point(50, 100), new Point(50, 150)};
PolyLineSegment myPolyLineSegment = new PolyLineSegment();
myPolyLineSegment.Points =
new PointCollection(polyLinePointArray);
pathFigure2.Segments.Add(myPolyLineSegment);
pathFigure2.Segments.Add(
new QuadraticBezierSegment(
new Point(200,200),
new Point(300,100),
true /* IsStroked */ ));
myPathGeometry.Figures.Add(pathFigure2);
// Display the PathGeometry.
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = myPathGeometry;
Dim myPathGeometry As New PathGeometry()
' Create a figure.
Dim pathFigure1 As New PathFigure()
pathFigure1.StartPoint = New Point(10,50)
pathFigure1.Segments.Add(New BezierSegment(New Point(100,0), New Point(200,200), New Point(300,100), True)) ' IsStroked
pathFigure1.Segments.Add(New LineSegment(New Point(400,100), True)) ' IsStroked
pathFigure1.Segments.Add(New ArcSegment(New Point(200,100), New Size(50,50), 45, True, SweepDirection.Clockwise, True)) ' IsStroked - IsLargeArc
myPathGeometry.Figures.Add(pathFigure1)
' Create another figure.
Dim pathFigure2 As New PathFigure()
pathFigure2.StartPoint = New Point(10,100)
Dim polyLinePointArray() As Point = { New Point(50, 100), New Point(50, 150)}
Dim myPolyLineSegment As New PolyLineSegment()
myPolyLineSegment.Points = New PointCollection(polyLinePointArray)
pathFigure2.Segments.Add(myPolyLineSegment)
pathFigure2.Segments.Add(New QuadraticBezierSegment(New Point(200,200), New Point(300,100), True)) ' IsStroked
myPathGeometry.Figures.Add(pathFigure2)
' Display the PathGeometry.
Dim myPath As New Path()
myPath.Stroke = Brushes.Black
myPath.StrokeThickness = 1
myPath.Data = myPathGeometry
StreamGeometry
sınıfı PathGeometry gibi , StreamGeometry eğriler, yaylar ve çizgiler içere bir karmaşık geometrik şekil tanımlar. ' den PathGeometry farklı olarak, bir StreamGeometry içeriğinin içeriği veri bağlamayı, animasyonu veya değişikliği desteklemez. Karmaşık bir geometriyi açıklamanız gereken ancak veri bağlama, animasyon veya değişiklik desteğinin ek yükünü StreamGeometry istemeyebilirsiniz. Verimliliği nedeniyle sınıfı StreamGeometry donatıcıları açıklamaya uygun bir seçenektir.
Örnek için bkz. StreamGeometry Kullanarak Şekil Oluşturma.
Yol Biçimlendirme Sözdizimi
ve türleri, özel bir Extensible Application Markup Language ve çizim komutları kullanarak bir Extensible Application Markup Language PathGeometryStreamGeometry (XAML) öznitelik sözdizimini destekler. Daha fazla bilgi için bkz. Yol Biçimlendirme Söz Dizimi.
Bileşik Geometriler
Bileşik geometri nesneleri , veya GeometryGroup statik yöntemi CombinedGeometry çağrılarak GeometryCombine oluşturulabilir.
nesnesi CombinedGeometry ve Combine yöntemi, iki geometri tarafından tanımlanan alanı birleştirmek için bir Boole işlemi gerçekleştirir. Geometry alanı olan nesneler atılır. Yalnızca iki Geometry nesne birleşebiliyor (bu iki geometri bileşik geometriler de olabilir).
sınıfı, GeometryGroup içerdiği nesnelerin alanlarını Geometry birleştirmeden bir amalgamation oluşturur. bir Geometry nesnesine herhangi bir sayıda nesne GeometryGroup eklenebilir. Örnek için bkz. Bileşik Şekil Oluşturma.
Birleştirme işlemi gerçekleştirmeyecekleri için nesneleri kullanma, GeometryGroup nesneleri veya yöntemini kullanmanın performans CombinedGeometry avantajlarını Combine sağlar.
Birleşik Geometriler
Yukarıdaki bölümde nesnesi CombinedGeometry ve Combine yöntemi, içerdiği geometriler tarafından tanımlanan alanı birleştirir. GeometryCombineModeNumaralama, geometrilerin nasıl birleştirildiklerini belirtir. özelliği için olası GeometryCombineMode değerler: Union , , ve IntersectExcludeXor .
Aşağıdaki örnekte birleştirme CombinedGeometry modu Union ile tanımlanmıştır. Hem Geometry1 hem de , aynı Geometry2 yarıçapa sahip daireler olarak tanımlanır, ancak merkezler 50'ye uzaklığındadır.
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
<Path.Data>
<!-- Combines two geometries using the union combine mode. -->
<CombinedGeometry GeometryCombineMode="Union">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="75,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>

Aşağıdaki örnekte, birleştirme CombinedGeometry modu ile Xor tanımlanır. Hem Geometry1 hem de , aynı Geometry2 yarıçapa sahip daireler olarak tanımlanır, ancak merkezler 50'ye uzaklığındadır.
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
<Path.Data>
<!-- Combines two geometries using the XOR combine mode. -->
<CombinedGeometry GeometryCombineMode="Xor">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="75,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>

Ek örnekler için bkz. Bileşik Şekil Oluşturma ve Birleşik Geometri Oluşturma.
Freezable Özellikleri
sınıfından devralınarak sınıf çeşitli özel özellikler sağlar: nesneler XAML Kaynakları olarak bildirilebilir, birden çok nesne arasında paylaşılır, performansı artırmak için salt okunur yapılır, kopyalanmış ve iş parçacığı güvenli FreezableGeometryGeometry yapılır. Freezable Nesneler tarafından sağlanan farklı özellikler hakkında daha fazla bilgi Freezable için bkz. Freezable
Diğer Geometri Özellikleri
sınıfı Geometry ayrıca aşağıdakiler gibi yararlı yardımcı yöntemler de sağlar:
FillContains - Geometrinin başka bir içeriği olup olmadığını Geometry belirler.
StrokeContains - Bir darbenin belirtilen bir nokta olup Geometry olmadığını belirler.
Yöntemlerinin Geometry tam listesi için sınıfına bakın.