473,795 Members | 3,167 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Fontsize difference

I am running a program to put a captcha image on my string and am trying to
make sure all the characters fit.

The problem is the size seems to be wrong.

What I am doing is starting from the rectangles' height + 1 (not sure why I
would use that as a starting point) then I loop through subtracting the
value by 1 until the size I get back from MeasureString is less than the
rectangle width.

I seem to be ending up with a string way to small.

The rectangle size is 200w * 50h.

When I use 50, I start losing characters on my display ( I am always using 7
and sometimes I will end up with 5 or 4 - not sure which routine is dropping
them - I assume it is my GraphicsPath.Ad dString that is doing it).

If I use 45, it always seems to work fine.

But if I run the loop and let the program figure it out it gets the
following:

After rect.width = 200 rect.height = 50
Inside do loop fontSize = 50 size.Width = 327.3979 rect.Width = 200
Inside do loop fontSize = 49 size.Width = 320.85 rect.Width = 200
Inside do loop fontSize = 48 size.Width = 314.3021 rect.Width = 200
Inside do loop fontSize = 47 size.Width = 307.7541 rect.Width = 200
Inside do loop fontSize = 46 size.Width = 301.2061 rect.Width = 200
Inside do loop fontSize = 45 size.Width = 294.6582 rect.Width = 200
Inside do loop fontSize = 44 size.Width = 288.1102 rect.Width = 200
Inside do loop fontSize = 43 size.Width = 281.5622 rect.Width = 200
Inside do loop fontSize = 42 size.Width = 275.0143 rect.Width = 200
Inside do loop fontSize = 41 size.Width = 268.4663 rect.Width = 200
Inside do loop fontSize = 40 size.Width = 261.9184 rect.Width = 200
Inside do loop fontSize = 39 size.Width = 255.3704 rect.Width = 200
Inside do loop fontSize = 38 size.Width = 248.8225 rect.Width = 200
Inside do loop fontSize = 37 size.Width = 242.2745 rect.Width = 200
Inside do loop fontSize = 36 size.Width = 235.7266 rect.Width = 200
Inside do loop fontSize = 35 size.Width = 229.1786 rect.Width = 200
Inside do loop fontSize = 34 size.Width = 222.6306 rect.Width = 200
Inside do loop fontSize = 33 size.Width = 216.0827 rect.Width = 200
Inside do loop fontSize = 32 size.Width = 209.5347 rect.Width = 200
Inside do loop fontSize = 31 size.Width = 202.9867 rect.Width = 200
Inside do loop fontSize = 30 size.Width = 196.4388 rect.Width = 200

30 is way less that the 45 that works.

Am I doing something wrong here? I am using the "Century Schoolbook" font.

Here is the code to test the size - the test is done just before the "while"
statement.

*************** *************** **********
float fontSize = rect.Height + 1;
Font font;
// Adjust the font size until the text fits within the image.
do
{
fontSize--;
font = new Font(this.famil yName, fontSize, FontStyle.Bold) ;
size = g.MeasureString (this.text, font);
} while (size.Width > rect.Width);
*************** *************** *************** **

Thanks,

Tom
Jun 16 '06 #1
1 1531
The Font constructor you are using assumes the size is in points, not in
pixels. If you want to use pixels, try:
font = new Font(this.famil yName, fontSize, FontStyle.Bold,
GraphicsUnit.Pi xel);

--
http://www.peterRitchie.com/
"tshad" wrote:
I am running a program to put a captcha image on my string and am trying to
make sure all the characters fit.

The problem is the size seems to be wrong.

What I am doing is starting from the rectangles' height + 1 (not sure why I
would use that as a starting point) then I loop through subtracting the
value by 1 until the size I get back from MeasureString is less than the
rectangle width.

I seem to be ending up with a string way to small.

The rectangle size is 200w * 50h.

When I use 50, I start losing characters on my display ( I am always using 7
and sometimes I will end up with 5 or 4 - not sure which routine is dropping
them - I assume it is my GraphicsPath.Ad dString that is doing it).

If I use 45, it always seems to work fine.

But if I run the loop and let the program figure it out it gets the
following:

After rect.width = 200 rect.height = 50
Inside do loop fontSize = 50 size.Width = 327.3979 rect.Width = 200
Inside do loop fontSize = 49 size.Width = 320.85 rect.Width = 200
Inside do loop fontSize = 48 size.Width = 314.3021 rect.Width = 200
Inside do loop fontSize = 47 size.Width = 307.7541 rect.Width = 200
Inside do loop fontSize = 46 size.Width = 301.2061 rect.Width = 200
Inside do loop fontSize = 45 size.Width = 294.6582 rect.Width = 200
Inside do loop fontSize = 44 size.Width = 288.1102 rect.Width = 200
Inside do loop fontSize = 43 size.Width = 281.5622 rect.Width = 200
Inside do loop fontSize = 42 size.Width = 275.0143 rect.Width = 200
Inside do loop fontSize = 41 size.Width = 268.4663 rect.Width = 200
Inside do loop fontSize = 40 size.Width = 261.9184 rect.Width = 200
Inside do loop fontSize = 39 size.Width = 255.3704 rect.Width = 200
Inside do loop fontSize = 38 size.Width = 248.8225 rect.Width = 200
Inside do loop fontSize = 37 size.Width = 242.2745 rect.Width = 200
Inside do loop fontSize = 36 size.Width = 235.7266 rect.Width = 200
Inside do loop fontSize = 35 size.Width = 229.1786 rect.Width = 200
Inside do loop fontSize = 34 size.Width = 222.6306 rect.Width = 200
Inside do loop fontSize = 33 size.Width = 216.0827 rect.Width = 200
Inside do loop fontSize = 32 size.Width = 209.5347 rect.Width = 200
Inside do loop fontSize = 31 size.Width = 202.9867 rect.Width = 200
Inside do loop fontSize = 30 size.Width = 196.4388 rect.Width = 200

30 is way less that the 45 that works.

Am I doing something wrong here? I am using the "Century Schoolbook" font.

Here is the code to test the size - the test is done just before the "while"
statement.

*************** *************** **********
float fontSize = rect.Height + 1;
Font font;
// Adjust the font size until the text fits within the image.
do
{
fontSize--;
font = new Font(this.famil yName, fontSize, FontStyle.Bold) ;
size = g.MeasureString (this.text, font);
} while (size.Width > rect.Width);
*************** *************** *************** **

Thanks,

Tom

Jun 17 '06 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
3320
by: Catherine Lynn Smith | last post by:
OK, I am learning my way around the new DOM, but I am still at a loss on finding a few things. I have an HTML document that links to a stylesheet. /* START STYLESHEET EXAMPLE */ /* styles/mystyles.css */ ..leftnav { font-family: Arial, Helvetica, sans-serif; font-size: 13pt;
2
1930
by: toddaa | last post by:
I'm sorry if this has previously asked and answered. I have been searching for a while and have come up empty. I am trying to write a function which will return the font size attribute for the current location of the cursor in an editable iframe. Unfortunately, queryCommandValue doesnt seem to be working. Instead of using the FONT tag everything is being converted to SPAN in order to set the font size by points instead of the seven...
0
932
by: tshad | last post by:
I am running a program to put a captcha image on my string and am trying to make sure all the characters fit. The problem is the size seems to be wrong. What I am doing is starting from the rectangles' height + 1 (not sure why I would use that as a starting point) then I loop through subtracting the value by 1 until the size I get back from MeasureString is less than the rectangle width.
1
5814
by: not_a_commie | last post by:
I want to take the FontSize from a System.drawing.Font type and turn that into a System.Windows.Controls FontSize. (Actually, I'd like to take the whole font over, but I didn't see any standard converter.) The former is a float and the latter a double. In XAML, though, you can specify a string to handle the conversion. I understand I can do this: NewFontSize = MainOldFont.Size * 96/72; however, isn't that 96 dependent upon a user setting?...
4
22083
by: jnag | last post by:
Hello, Through an onClick() event, I have an inline function to change the font size of the page (actually, I need to do this for the entire website). I have this defined in the header.cfm file as: onclick="document.body.style.fontSize='50%';" This does not work at all for some reason. Whereas,
6
7932
by: Adam Risser | last post by:
Hi, I am writing a function to change the font-size but I am running into a snag. I cannot get the current font-size of the body. Here is a link to a simplified test case http://mustang.millersville.edu/~wstudent/cewing/mu/test.php You would think that it would alert 72.5% when you click the resize button, but it alerts nothing. If i add the style to the body tag (style="font-size: 72.5%;" ), then it works.
3
1216
gomescoder
by: gomescoder | last post by:
HI TSDN Pals, I am trying to create an object to modify its colour, size, message attributes on the fly using OOP concept... Everything works fine with this code but the problem is the font size is not changing. I have highlighted the problem area in the below snippet. // Start of the Snippet -------------------------------
3
1279
by: menakavenkatesh | last post by:
i want simple coding for changing fontsize of the texbox
0
9672
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10435
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10213
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10163
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
1
7538
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6779
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5563
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4113
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3721
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.