GDI+'da Grafik Yolları
Yollar çizgiler, dikdörtgenler ve basit eğriler birleştirilerek oluşturulur. Vektör Grafiğine Genel Bakış'tan hatırlayacağınız üzere, aşağıdaki temel yapı taşları resim çizmek için en kullanışlı olduğu kanıtlanmıştır:
Hatlar
Dikdörtgenler
Elips
Yay
Çokgen
Kardinal splines
Bézier splines
GDI+ dilinde GraphicsPath nesnesi, bu yapı taşları dizisini tek bir ünitede toplamanıza olanak tanır. Çizgi, dikdörtgen, çokgen ve eğri dizisinin tamamı, sınıfın DrawPathGraphics yöntemine tek bir çağrıyla çizilebilir. Aşağıdaki çizimde bir çizgi, bir yay, Bézier spline ve bir kardinal spline birleştirilerek oluşturulan bir yol gösterilmektedir.
Yol Kullanma
GraphicsPath sınıfı, çizilecek bir öğe dizisi oluşturmak için aşağıdaki yöntemleri sağlar: AddLine, AddRectangle, AddEllipse, AddArc, , AddPolygon, AddCurve (kardinal eğriler için) ve AddBezier. Bu yöntemlerin her biri aşırı yüklenmiştir; diğer bir ifadeyle, her yöntem birkaç farklı parametre listesini destekler. Örneğin, yöntemin AddLine bir varyasyonu dört tamsayı alır ve yöntemin AddLine başka bir varyasyonu iki Point nesne alır.
Bir yola çizgi, dikdörtgen ve Bézier spline ekleme yöntemleri, tek bir çağrıda yola birkaç öğe ekleyen çoğul eşlikçi yöntemlerine sahiptir: AddLines, AddRectanglesve AddBeziers. Ayrıca ve AddArc yöntemleri, AddPieAddCurveAddClosedCurve yola kapalı bir eğri veya pasta ekleyen ve yardımcı yöntemlerine sahiptir.
Yol çizmek için bir Graphics nesneye, nesneye Pen ve nesneye GraphicsPath ihtiyacınız vardır. Graphics nesnesi yöntemini sağlar DrawPath ve Pen nesnesi yolu işlemek için kullanılan çizginin width ve color gibi özniteliklerini depolar. nesnesi, GraphicsPath yolu oluşturan çizgi ve eğri dizisini depolar. Pen nesnesi ve GraphicsPath nesnesi yöntemine DrawPath bağımsız değişken olarak geçirilir. Aşağıdaki örnek bir çizgi, üç nokta ve Bézier spline'dan oluşan bir yol çizer:
myGraphicsPath.AddLine(0, 0, 30, 20);
myGraphicsPath.AddEllipse(20, 20, 20, 40);
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10);
myGraphics.DrawPath(myPen, myGraphicsPath);
myGraphicsPath.AddLine(0, 0, 30, 20)
myGraphicsPath.AddEllipse(20, 20, 20, 40)
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10)
myGraphics.DrawPath(myPen, myGraphicsPath)
Aşağıdaki çizimde yol gösterilmektedir.
Yola çizgiler, dikdörtgenler ve eğriler eklemenin yanı sıra, bir yola yol ekleyebilirsiniz. Bu, büyük ve karmaşık yollar oluşturmak için var olan yolları birleştirmenizi sağlar.
myGraphicsPath.AddPath(graphicsPath1, false);
myGraphicsPath.AddPath(graphicsPath2, false);
myGraphicsPath.AddPath(graphicsPath1, False)
myGraphicsPath.AddPath(graphicsPath2, False)
Yola ekleyebileceğiniz iki öğe daha vardır: dizeler ve pastalar. Pasta, üç noktanın iç kısmının bir bölümüdür. Aşağıdaki örnek bir yaydan bir yol, bir kardinal spline, bir dize ve bir pasta oluşturur:
GraphicsPath myGraphicsPath = new GraphicsPath();
Point[] myPointArray =
{
new Point(5, 30),
new Point(20, 40),
new Point(50, 30)
};
FontFamily myFontFamily = new FontFamily("Times New Roman");
PointF myPointF = new PointF(50, 20);
StringFormat myStringFormat = new StringFormat();
myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
myGraphicsPath.StartFigure();
myGraphicsPath.AddCurve(myPointArray);
myGraphicsPath.AddString("a string in a path", myFontFamily,
0, 24, myPointF, myStringFormat);
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);
myGraphics.DrawPath(myPen, myGraphicsPath);
Dim myGraphicsPath As New GraphicsPath()
Dim myPointArray As Point() = { _
New Point(5, 30), _
New Point(20, 40), _
New Point(50, 30)}
Dim myFontFamily As New FontFamily("Times New Roman")
Dim myPointF As New PointF(50, 20)
Dim myStringFormat As New StringFormat()
myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180)
myGraphicsPath.StartFigure()
myGraphicsPath.AddCurve(myPointArray)
myGraphicsPath.AddString("a string in a path", myFontFamily, _
0, 24, myPointF, myStringFormat)
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110)
myGraphics.DrawPath(myPen, myGraphicsPath)
Aşağıdaki çizimde yol gösterilmektedir. Bir yolun bağlı olması gerekmediğini unutmayın; yay, kardinal spline, dize ve pasta birbirinden ayrılır.
Ayrıca bkz.
.NET Desktop feedback