Solved

Create proportional font space in  System.Drawing.Graphics

Posted on 2008-06-22
2
1,093 Views
Last Modified: 2010-04-21
Hi

I am using C#, in a asp.net webform

I am trying to write a tiff file from text using using System.Drawing and System.Drawing.Imaging. The problem I am having is that the font is not propotional. So when I do a line break in the text,  "III 111" does not line up with "ABC 976" in the row above it. How can I get the data to line up proportionally?
string FontName = "Verdana";
        System.Drawing.Color FontColor = Color.Black;
        System.Drawing.Color BackColor = Color.White; 
        int FontSize = 14; 
        int Width = 200; 
        //fontsize times 1.5 is just high enough 
        //to encase the text without spacer above or below.         
        float h = (FontSize * 1.5f);
        int Height = 200; // int.Parse(h.ToString());         
        //file to save as 
        //fore color 
        System.Drawing.SolidBrush objBrushForeColor = new SolidBrush(FontColor);         
        //back color 
        System.Drawing.SolidBrush objBrushBackColor = new SolidBrush(BackColor);         
        //the point to start the text. I chose horizontal value of zero 
        //vertical starts at 2 pixels down. 
        System.Drawing.Point objPoint = new Point(0, 2); 
        //font object 
        System.Drawing.Font objFont = new Font(FontName, FontSize);
        //Drawing.Font(family, 32, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
 
        //bitmap object 
        System.Drawing.Bitmap objBitmap = new Bitmap(Height, Width); 
        //graphics object 
        System.Drawing.Graphics objGraphics = System.Drawing.Graphics.FromImage(objBitmap); 
        //the following line is not needed, but is shown 
        //in the vb example.. dont know why. 
        //Color objColor; 
        //draw a white rectangle 
        objGraphics.FillRectangle(objBrushBackColor, 0, 0, Width, Height);           // (FontSize*1.5f)); 
        //draw the text 
        objGraphics.DrawString("ABC 123\r\nCDE 345\r\nDEF 456\r\nIII 111", objFont, objBrushForeColor,objPoint,
        //save the bitmap. 
        objBitmap.Save(@"C:\CreateThumbnailImage\file.tiff", ImageFormat.Tiff);
        Response.Write("done");

Open in new window

0
Comment
Question by:Charles Baldo
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 9

Accepted Solution

by:
Pacman earned 500 total points
ID: 21843912
The font you are using (Verdana) is a proportional font.
Take a fixed font (courier or courier new).

string FontName = "Courier New";

Open in new window

0
 

Author Closing Comment

by:Charles Baldo
ID: 31469628
Perfect, thanks a ton
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…

756 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question