Solved

Create proportional font space in  System.Drawing.Graphics

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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Suggested Solutions

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…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

911 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

20 Experts available now in Live!

Get 1:1 Help Now