اشکال در WPF فقط می توانند درون کانتینرها یا کنترلهای دیگری که از Panel مشتق شده اند قرار بگیرند.
کشیدن چند ضلعی Polygon
برای کشیدن چند ضلعی از کنترل Polygon استفاده می شودکه همانند کنترل Polyline دارای خاصیت آرایه ای به نام Points برای نشان دادن نقاطی که قرار است خطوط بین آنها کشیده شود ،دارد. تفاوت این کنترل (Polygon) با کنترل Polyline در این است که از Polygon برای کشیدن اشکال چند ضلعی به صورت بسته استفاده می شود.(یعنی بطور خودکار خطی از انتها به ابتدا کشیده می شود).
نحوه دادن اطلاعات نقاط به آرایه Points بدین صورت است که به ازای هر X,Y یک نقطه ایجاد می شود و برای جدا کردن نقاط از فاصله استفاده کنید
<Canvas Height="300" Width="300">
<!-- Polyline Left , Top -->
<Polygon Points="10,130 60,30 110,130" Fill="Blue" />
<!-- Polyline Right , Top -->
<Polygon Points="10,110 110,110 110,10"
Fill="Blue"
Canvas.Left="160" Canvas.Top="20" />
<!-- Polyline Left , Bottom -->
<Polygon Points="0,0 50,-50 100,-50 150,0 100,50 50,50"
Fill="Blue" Stroke="Black" StrokeThickness="4"
Canvas.Top="220" Canvas.Left="10" />
<!-- Polyline Right , Bottom -->
<Polygon Points="10,110 110,110 110,10"
Stroke="Black" StrokeThickness="4"
Canvas.Left="160" Canvas.Top="150" />
</Canvas>
توضیحات بیشتر در شکل
مثال در VB.Net
Dim poly As New Polygon
Dim po As Point
po.X = 100
po.Y = 100
poly.Points.Add(New Point(0, 0))
poly.Points.Add(New Point(50, 100))
poly.Points.Add(po)
poly.Stroke = Brushes.Red
grid1.Children.Add(poly)
نکته :
چون از کانتینر Canvas استفاده شده است مختصات داده شده ثابت هستند و با توجه به مقادیر Canvas.Left (فاصله از سمت چپ) و Canvas.Top (فاصله از بالا) به مقادیر نقاط داده شده اضافه می شود(در واقع Canvas.Left و Canvas.Top نقطه صفر برای کشیدن اشکال را مشخص می کنند و بصورت پیش فرض صفر می باشند)