Graphics.DrawFormattedText Method (String, Font, SolidBrush, Rectangle, Boolean, Int32)

Draws the specified text in the specified rectangle according to its markup.

Namespace: Aurigma.GraphicsMill.Drawing
Assembly: Aurigma.GraphicsMill (in Aurigma.GraphicsMill.dll)


public void DrawFormattedText(
	string s,
	Font font,
	SolidBrush brush,
	Rectangle rect,
	bool clipping,
	int tabSize



Type: System.String

A marked up text to draw. See Remarks section for details on text markup requirements.

Type: Aurigma.GraphicsMill.Drawing.Font

A Font that defines the text format.

Type: Aurigma.GraphicsMill.Drawing.SolidBrush

A SolidBrush that determines the color of the drawn text.

Type: System.Drawing.Rectangle

A Rectangle structure that specifies the bounds of the drawn text.

Type: System.Boolean

true if the string is clipped when it does not fit the bounding rectangle; otherwise, false.

Type: System.Int32

The number of whitespaces to replace one tabulation character in the text.


This method is quite similar to DrawText() with the exception of a one difference. The text you want to draw using the DrawFormattedText() method must be marked up with XML-like tags. The following tags and document structure are allowed:

  <para [style="..."]>
    [some text]
     <span [style="..."]>
       [some text]
         <span [style="..."]>
           [some text]
     <span [style="..."]></span>
  <para [style="..."]></para>

Let us consider it more detailed:

root is a root tag. It is exactly one all over the text and includes all the characters inside. If you place some text ouside the <root></root> tags, the DrawFormattedText() will throw an exception.

para is a paragraph tag. All the text you want to draw should be divided into paragraphs (at least one) and each of them should be enclosed between <para> and </para> tags. Otherwise, the text will not be parsed and drawn. It supports the style attribute (see below) to specify some text and color properties of this paragraph.

span is a tag intended to define a new inline area. You can use it to highlight some text inside a paragraph. These tags can be embedded in the existing <span></span> tags. It supports the style attribute too.


All the allowed tags are case insensitive, however, the name of every opening tag must have the same case as that of the corresponding closing tag. It means that <SpAn></SpAn> or <rOOt></rOOt> pairs will be parsed successfully, but pairs like <Para></parA> will cause an error.

The text layout mechanism used in the DrawFormattedText() method is based on CSS and uses style attributes to attach some font, color and text parameters to paragraphs and theirs parts. This attribute accepts a string contained style parameters and corresponded values. Its common syntax is shown below:

style="style-parameter1:value1; style-parameter2:value2; ...; style-parameterN:valueN"

The style attribute and its value are case insensitive, i.e. this style setting will be applied correctly: StyLe="fOnT-faMily: CoUriEr NeW; FoNt-siZe: 18; cOlOr:RgB(100,10,10)"

All the supported parameters are described in the following table:

Name Description Examples

Specifies a typeface name of the font.

If a font with the specified typeface name is not found, system uses the first font which matches other settings (as usual it is "Arial").


Selects between normal and italic faces within a font family.




Selects the weight of the font. The values 100 to 900 form an ordered sequence, where each number indicates a weight that is at least as dark as its predecessor. The keyword normal is synonymous with 400, and bold is synonymous with 700.





Specifies the font size.



Specifies the text color. A numerical RGB specification is used. No keywords (such as red, white, etc) are supported.

style="color:rgb(200, 0, 0)"


Specifies the text alignment. The following alignment types are supported:

  • center text is centered.
  • left text is aligned to the left.
  • right text is aligned to the right.
  • justify text is justified.

If the justify alignment type is specified the last line of the text can be aligned using the textAlignLast parameter. This parameter can be one of the following values:

  • center the last line is centered.
  • left the last line is aligned to the left.
  • right the last line is aligned to the right.
  • justify the last line is justified.

If the textAlignLast parameter is not specified the last line of the text will be aligned along the left edge.


style="text-align:justify; textAlignLast:right"


Specifies the space between two adjacent lines of text.



The DrawFormattedText() supports the following XML predeclared entities:

  • &amp; & ampersand;
  • &lt; < less than;
  • &gt; > greater than.

This method parses the tabulation character (\t in C# and vbTab in VB) as a sequence of whitespaces. Number of whitespaces to replace one tabulation character in the text can be specified with the tabSize parameter.

The extent of the text drawn by this method can be measured using the MeasureFormattedText(String, Font, Size, Boolean, Int32) method.


The DrawFormattedText(), unlike the DrawText(), does not support the newline character (\n in C# and vbNewLine in VB). To draw a string on a new line enclose it in <para></para> tags.

See Also