Solved

Create proportional font space in  System.Drawing.Graphics

Posted on 2008-06-22
2
1,081 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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

759 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

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now