The System.Drawinging.Pen and System.Drawing.Font classes represent pen and font objects in GDI+.
The Pen Class
A pen draws a line of specified width and style. You always use Pen constructor to create a pen. The constructor initializes a new instance of the Pen class. You can initialize it with a color or brush.
Initializes a new instance of the Pen class with the specified color. The Color is the only one parameter passed in constructor as an argument.
Initializes a new instance of the Pen class with the specified Brush. The Brush is the only one parameter passed in constructor as an argument.
Initializes a new instance of the Pen class with the specified Brush and width.
public Pen(Brush, float);
Initializes a new instance of the Pen class with the specified Color and Width.
public Pen(Color, float);
Here is one example:
Pen pn = new Pen( Color.Blue );
Pen pn = new Pen( Color.Blue, 100 ); Some of its most commonly used properties are Alignment, Brush, Color, and Width, which are self-explanatory.
The Font Class
The Font class defines a particular format for text such as font type, size, and style attributes. You use font constructor to create a font.
Initializes a new instance of the Font class with the specified attributes.
public Font(string, float);
Initializes a new instance of the Font class from the specified existing Font and FontStyle.
public Font(Font, FontStyle);
Where FontStyle is an enumeration, which include values Bold, Italic, Regular, StrikeOut, and Underline, which are self-explanatory. Here is one example:
Graphics g ;
Font font = new Font("Times New Roman", 26); Some of its most commonly used properties are:
|Bold ||Gets a value indicating whether this Font is bold.|
|FontFamily ||Gets the FontFamily of this Font.|
|Height ||Gets the height of this Font.|
|Italic ||Gets a value indicating whether this Font is Italic.|
|Name ||Gets the face name of this Font.|
|Size ||Gets the size of this Font.|
|SizeInPoints ||Gets the size, in points, of this Font.|
|Strikeout ||Gets a value indicating whether this Font is strikeout (has a line through it).|
|Style ||Gets style information for this Font.|
|Underline ||Gets a value indicating whether this Font is underlined.|
|Unit ||Gets the unit of measure for this Font.|
Working with Fonts and FontFamily
Although we've already discussed Fonts in the previous section of this chapter but there is more to be discussed about fonts.
The System.Drawing.Font class represents a font type. For example,
Font greenSolid = new Font("Verdana", 14); Creates a font type verdana with size 14. You can also use a FontStyle as an argument when constructing a font. The below line creates a font of Tahoma with different styles.
Font redStyle = new Font("Tahoma", 20, FontStyle.Bold|FontStyle.Italic|FontStyle.Underline);
g.DrawString("Text on the Screen", greenSolid, new SolidBrush(Color.Green), 10,10);
g.DrawString("Red Text", redStyle, new HatchBrush(HatchStyle.DiagonalCross, Color.Chocolate, Color.Red), 50,40); The FontStyle Enumeration defines these styles.
Table 11-6. FontStyle Enumeration
|Bold ||Bold Text.|
|Italic ||Italic Text|
|Regular ||Regular Text.|
|StrikeOut ||Text with a line in middle.|
|Underline ||Underline Text.|
FontFamily is another class we'd like to discuss before moving to the next topic. System.Drawing.FontFamily class represents a font family, which is used to work with similar kind of fonts with different style variations. For example, Tahoma font can have different styles and size.
FontFamily tahomaFmly = new FontFamily("Tahoma"); Here tahomaFmly represents the Tahoma font family.
In the below sample example, green28 and red14Italic uses same font family to create a Tahoma font with different styles.
FontFamily fontFmly = new FontFamily("Tahoma");
Font green28 = new Font(fontFmly, 28);
Font red14Italic = new Font(fontFmly, 14, FontStyle.Italic);
g.DrawString("Text on the Screen", green28, new SolidBrush(Color.Green), 10,10);
g.DrawString("Text on the Screen", red14Italic, new SolidBrush(Color.Red), 10,10);
FontFamily class provides members to get information about a family of fonts. These members include GetName, GetLineSpacing, GetEmHeight, IsStyleAvailable and so on. All of them are self-explanatory.
Working with Pens
We've seen earlier in this chapter that the Graphics class's draw members such as DrawLine, DrawRectangle, DrawArc and so on use pens to draw objects. A pen draws a line with specified width and style. The System.Drawing.Pen and System.Drawing.Pens classes represent pens in GDI+. Some of the System.Drawing.Pen class properties are defined in the following table.
Public Instance Properties
|Brush ||Attached brush with a pen.|
|Color ||Color of a pen.|
|Dash Style ||Dashed line style.|
|DashCap ||Style at the beginning and at the end of dashed lines.|
|DashedOffset ||Distance from the start of a line before a dashed pattern.|
|Custom cap style at the beginning and end of the line.|
|DashPattern ||Dash pattern.|
|DashStyle ||Dashed line style.|
|StartCap, EndCap ||Starts and ends the cap style.|
|PenTyle ||Style of lines of a pen.|
|Transform ||Geometric transformation of a pen.|
|Width ||Width of a pen|
The System.Drawing.Pens class represents pens of all the colors. The System.Drawing.Pens class is non inheritable. For example,
Pen redPn = new Pen(Color.Red, 14); You can set the other properties:
Pen redPen = Pens.Red;
g.DrawLine(redPen, 10, 40, 50, 60);
pnGreen.Width = 4;
pnGreen.DashStyle = DashStyle.DashDot;
The DashStyle members and their description are given below -
|Custom ||custom dash style.|
|Dash ||A line consisting of dashes.|
|DashDot ||A line of a repeating pattern of dash-dot.|
|DashDotDot ||A line of a repeating pattern of dash-dot-dot.|
|Dot ||A line consisting of dots.|
|Solid ||A solid line.|