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 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 This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
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;
|
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...
|
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.
|
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?...
|
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,
| |
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.
|
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
-------------------------------
|
by: menakavenkatesh |
last post by:
i want simple coding for changing fontsize of the texbox
|
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...
|
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...
|
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...
| |
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,...
|
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...
|
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();...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
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
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |