This article has been
excerpted from book "Graphics Programming with GDI+".
Adjustable arrow caps allow you to set the size of the cap's base cap, height,
width, and joins. The AdjustableArrowCaps class, which is inherited from the
CustomLineCap class, represents an adjustable arrow-shaped line cap.
The AdjustableArrowCap class constructor takes three parameters: the width of
the arrow as a floating value, the height of the arrow as a floating value and a
Boolean value (optional) that, if true, indicates that the arrow cap is filled.
The following code snippet creates an AdjustableArrowCap object:
float w = 2;
float h = 5;
bool fill =
false;
AdjustableArrowCap myArrow = new
AdjustableArrowCap(w, h, fill);
Besides having CustomLineCap methods and properties, AdjustableArrowCap provides
four properties: Filled, Height, Width, and MiddleInset. The Height and Width
properties represent the height and the width, respectively of an arrow cap. The
Filled property indicates whether an arrow cap is filled. The MiddleInset
property represents the distance between the outline of the arrow cap and the
fill.
Now let's add an AdjustableArrowCap option to our application. We add one menu
item to the form, along with a menu item click event handler, as shown in
Listing 9.8. We create two AdjustableArrowCap object and set their BasCap,
BaseInset, StrokeJoin, and WidthScale properties. Then we create a black Pen
object with a width of 15 and set the CustomStartCap and CustomEndCap properties
of the pen as AdjustableArrowCap objects. Finally, we use this pen to draw a
line with DrawLine.
LISTING 9.8: Using adjustable arrow caps
private void
AdjustableRowCapMenu_Click(object sender,
System.EventArgs e)
{
// Create a Graphics object
Graphics g =
this.CreateGraphics();
g.Clear(this.BackColor);
// Create two AdjustableArrowCap objects
AdjustableArrowCap cap1 = new
AdjustableArrowCap(1, 1, false);
AdjustableArrowCap cap2 = new
AdjustableArrowCap(2, 1);
// Set cap properties
cap1.BaseCap = LineCap.Round;
cap1.BaseInset = 5;
cap1.StrokeJoin = LineJoin.Bevel;
cap2.WidthScale = 3;
cap2.BaseCap = LineCap.Square;
cap2.Height = 1;
// Create a pen
Pen blackPen =
new Pen(Color.Black,
15);
// Set CustomStartCap and CustomEndCap
properties
blackPen.CustomStartCap = cap1;
blackPen.CustomEndCap = cap2;
// Draw line
g.DrawLine(blackPen, 20, 50, 200, 50);
// Dispose of objects
blackPen.Dispose();
g.Dispose();
}
Figure 9.15 shows the output from Listing 9.8. The end caps have different
sizes.
FIGURE 9.15: Adjustable arrow caps
Conclusion
Hope the article would have helped you in understanding Adjustable Arrow Caps in
GDI+. Read other articles on GDI+ on the website.
|
This book teaches
.NET developers how to work with GDI+ as they develop applications
that include graphics, or that interact with monitors or printers.
It begins by explaining the difference between GDI and GDI+, and
covering the basic concepts of graphics programming in Windows. |