Solved

Create proportional font space in  System.Drawing.Graphics

Posted on 2008-06-22
2
1,085 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:charlesbaldo
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:charlesbaldo
ID: 31469628
Perfect, thanks a ton
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

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

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

772 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