Skip to content

3.11 Draw Text Box

OgreTransporter edited this page Mar 2, 2020 · 1 revision

The DrawTextBox method is an example of using the TextBox class. The TextBox class formats text to fit within a column. The text can be drawn using a verity of font's styles and sizes.

// Draw example of a text box
private void DrawTextBox()
{
    // save graphics state
    Contents.SaveGraphicsState();

    // translate origin to PosX=1.1" and PosY=1.1" this is the bottom left corner of the text box example
    Contents.Translate(1.1, 1.1);

    // Define constants
    // Box width 3.25"
    // Box height is 3.65"
    // Normal font size is 9.0 points.
    const double Width = 3.15;
    const double Height = 3.65;
    const double FontSize = 9.0;

    // Create text box object width 3.25"
    // First line indent of 0.25"
    TextBox Box = new TextBox(Width, 0.25);

    // add text to the text box
    Box.AddText(ArialNormal, FontSize,
    "This area is an example of displaying text that is too long to fit within a fixed width " +
    "area. The text is displayed justified to right edge. You define a text box with the required " +
    "width and first line indent. You add text to this box. The box will divide the text into " +
    "lines. Each line is made of segments of text. For each segment, you define font, font " +
    "size, drawing style and color. After loading all the text, the program will draw the formatted text.\n");
    Box.AddText(TimesNormal, FontSize + 1.0, "Example of multiple fonts: Times New Roman, ");
    Box.AddText(Comic, FontSize, "Comic Sans MS, ");
    Box.AddText(ArialNormal, FontSize, "Example of regular, ");
    Box.AddText(ArialBold, FontSize, "bold, ");
    Box.AddText(ArialItalic, FontSize, "italic, ");
    Box.AddText(ArialBoldItalic, FontSize, "bold plus italic. ");
    Box.AddText(ArialNormal, FontSize - 2.0, "Arial size 7, ");
    Box.AddText(ArialNormal, FontSize - 1.0, "size 8, ");
    Box.AddText(ArialNormal, FontSize, "size 9, ");
    Box.AddText(ArialNormal, FontSize + 1.0, "size 10. ");
    Box.AddText(ArialNormal, FontSize, DrawStyle.Underline, "Underline, ");
    Box.AddText(ArialNormal, FontSize, DrawStyle.Strikeout, "Strikeout. ");
    Box.AddText(ArialNormal, FontSize, "Subscript H");
    Box.AddText(ArialNormal, FontSize, DrawStyle.Subscript, "2");
    Box.AddText(ArialNormal, FontSize, "O. Superscript A");
    Box.AddText(ArialNormal, FontSize, DrawStyle.Superscript, "2");
    Box.AddText(ArialNormal, FontSize, "+B");
    Box.AddText(ArialNormal, FontSize, DrawStyle.Superscript, "2");
    Box.AddText(ArialNormal, FontSize, "=C");
    Box.AddText(ArialNormal, FontSize, DrawStyle.Superscript, "2");
    Box.AddText(ArialNormal, FontSize, "\n");
    Box.AddText(Comic, FontSize, Color.Red, "Some color, ");
    Box.AddText(Comic, FontSize, Color.Green, "green, ");
    Box.AddText(Comic, FontSize, Color.Blue, "blue, ");
    Box.AddText(Comic, FontSize, Color.Orange, "orange, ");
    Box.AddText(Comic, FontSize, DrawStyle.Underline, Color.Purple, "and purple.\n");
    Box.AddText(ArialNormal, FontSize, "Support for non-Latin letters: ");
    Box.AddText(ArialNormal, FontSize, Contents.ReverseString("עברית"));
    Box.AddText(ArialNormal, FontSize, "АБВГДЕ");
    Box.AddText(ArialNormal, FontSize, "αβγδεζ");

    Box.AddText(ArialNormal, FontSize, "\n");

    // Draw the text box
    // Text left edge is at zero (note: origin was translated to 1.1") 
    // The top text base line is at Height less first line ascent.
    // Text drawing is limited to vertical coordinate of zero.
    // First line to be drawn is line zero.
    // After each line add extra 0.015".
    // After each paragraph add extra 0.05"
    // Stretch all lines to make smooth right edge at box width of 3.15"
    // After all lines are drawn, PosY will be set to the next text line after the box's last paragraph
    double PosY = Height;
    Contents.DrawText(0.0, ref PosY, 0.0, 0, 0.015, 0.05, TextBoxJustify.FitToWidth, Box);

    // Create text box object width 3.25"
    // No first line indent
    Box = new TextBox(Width);

    // Add text as before.
    // No extra line spacing.
    // No right edge adjustment
    Box.AddText(ArialNormal, FontSize,
    "In the examples above this area the text box was set for first line indent of " +
    "0.25 inches. This paragraph has zero first line indent and no right justify.");
    Contents.DrawText(0.0, ref PosY, 0.0, 0, 0.01, 0.05, TextBoxJustify.Left, Box);

    // Create text box object width 2.75
    // First line hanging indent of 0.5"
    Box = new TextBox(Width - 0.5, -0.5);

    // Add text
    Box.AddText(ArialNormal, FontSize,
    "This paragraph is set to first line hanging indent of 0.5 inches. " +
    "The left margin of this paragraph is 0.5 inches.");

    // Draw the text
    // left edge at 0.5"
    Contents.DrawText(0.5, ref PosY, 0.0, 0, 0.01, 0.05, TextBoxJustify.Left, Box);

    // restore graphics state
    Contents.RestoreGraphicsState();
    return;
}
Clone this wiki locally