Graphics.MeasureCharacterRanges Giving Wrong Size Calculations In C#.Net?
Apr 21, 2010
I'm trying to render some text into a specific part of an image in a Web Forms app. The text will be user entered, so I want to vary the font size to make sure it fits within the bounding box.
I have code that was doing this fine on my proof-of-concept implementation, but I'm now trying it against the assets from the designer, which are larger, and I'm getting some odd results.
I'm running the size calculation as follows:
StringFormat fmt = new StringFormat();
fmt.Alignment = StringAlignment.Center;
fmt.LineAlignment = StringAlignment.Near;
fmt.FormatFlags = StringFormatFlags.NoClip;
fmt.Trimming = StringTrimming.None;
[Code]....
Now I have two problems.
Firstly, the text sometimes insists on wrapping by inserting a line-break within a word, when it should just fail to fit and cause the while loop to decrement again. I can't see why it is that Graphics.MeasureCharacterRanges thinks that this fits within the box when it shouldn't be word-wrapping within a word. This behaviour is exhibited irrespective of the character set used (I get it in Latin alphabet words, as well as other parts of the Unicode range, like Cyrillic, Greek, Georgian and Armenian). Is there some setting I should be using to force Graphics.MeasureCharacterRanges only to be word-wrapping at whitespace characters (or hyphens)? This first problem is the same as post 2499067.
Secondly, in scaling up to the new image and font size, Graphics.MeasureCharacterRanges is giving me heights that are wildly off. The RectangleF I am drawing within corresponds to a visually apparent area of the image, so I can easily see when the text is being decremented more than is necessary. Yet when I pass it some text, the GetBounds call is giving me a height that is almost double what it's actually taking.
Using trial and error to set the __minimumSize to force an exit from the while loop, I can see that 24pt text fits within the bounding box, yet Graphics.MeasureCharacterRanges is reporting that the height of that text, once rendered to the image, is 122px (when the bounding box is 64px tall and it fits within that box). Indeed, without forcing the matter, the while loop iterates to 18pt, at which point Graphics.MeasureCharacterRanges returns a value that fits.
The trace log excerpt is as follows:
Decrementing font size to 24, as size is 193×122 and limit is 212×64
Decrementing font size to 23, as size is 191×117 and limit is 212×64
Decrementing font size to 22, as size is 200×75 and limit is 212×64
Decrementing font size to 21, as size is 192×71 and limit is 212×64
Decrementing font size to 20, as size is 198×68 and limit is 212×64
Decrementing font size to 19, as size is 185×65 and limit is 212×64
Writing VENNEGOOR of HESSELINK in DIN-Black at 18pt, size is 178×61 and limit is 212×64
So why is Graphics.MeasureCharacterRanges giving me a wrong result? I could understand it being, say, the line height of the font if the loop stopped around 21pt (which would visually fit, if I screenshot the results and measure it in Paint.Net), but it's going far further than it should be doing because, frankly, it's returning the wrong damn results.
View 2 Replies
Similar Messages:
Aug 27, 2010
I'm working on an auto-fill feature for a form. Everything works perfectly except for filling in an image beside a file upload control. I know you can't set an upload control, so I'm setting the imageurl with the path and using that instead. The problem is, when I add the path in the code behind, it's messing up the space character (%20) in the path.
for example what should be:
file:///S:/Projects/Bulletin_Mugs/CBProject/Brown,%20john%2012-11-1981.png
becomes:
file:///S:/Projects/Bulletin_Mugs/CBProject/Brown,%2520john%252012-11-1981.png
Here's the relevant code: [Code]....and here's the path as is in the database:
S:/Projects/Bulletin_Mugs/CBProject/Brown, john 12-11-1981.png
View 6 Replies
Sep 9, 2010
I have a log in control that has this set in the aspx:
View 2 Replies
Aug 1, 2010
I have a weird thing happening. I have two identical databases installed on one virtual machine but under two different instances of SQLServer. For some reason, periodically when saving from one it will save to the other instead. Using debug, I have verified that the connection string is correct and when the item saves, it still saves to the wrong database.I use session variable, and am of the belief that it might have something to do with it...and t hat when I go from one to the other it is still getting the connection string form the other for some reason.To make sure that it isn't a problem, I make sure that I completely close out one database before opening the other in a new IE window.I assume that when I completely close out an internet explorer window that it abandons all session states. Is that true?
View 7 Replies
Aug 1, 2010
I have a very weird thing happening. I have two databases that have exactly the same tables but different database names on the same virtual machine, but in different instances of SQL Server. For some reason, when using one of them, it will save to the other. In debug, looking at my connection string..I have verified that it is correct, yet when I allow the save, I look in the table and it isn't there, it is in the other database that is in a table with a completely different name and in a different instance of SQL Server.
View 1 Replies
Apr 21, 2010
I'm using asp.net with vb.net on my web application. I also have an SQL database which I need the 2d graphical "game" page to communicate with. Which programming language would be best for this? The user has to be able to click on an item and retrieve information from the SQL database, I don't know if java can link up with SQL
View 4 Replies
Dec 6, 2010
I've uploaded a simple Azure website (am testing out authentication) and have found this:http://mateerweb.cloudapp.net/ (live for next 12 hours or so!)Its supposed to look like this:Problem: How to get the live version looking like the test one on every deploy. After a recompile sometimes it works..
View 1 Replies
Jan 10, 2011
I have the following list of fonts:I have no issues with using them vianew Font("XXXX Sans", 21, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel)However, what do i do when i need to use a non-standard font style like light? All that is provided is an enumeration and that is not suitable.
View 1 Replies
Feb 6, 2010
how to get the best software to use for the following?
(i) Web graphics: Apart from Photoshop what is the best easy to use program (minimum learning curve)for producing quality drawings suitable for a website?I know that there are many graphic programs around but I want one that is easy to use and produces QUALITY drawings.
(ii) Animations: Similarly I am looking for an easy to use animation program. I have used Flash before but I feel that there is a steep learning curve. Is there a better program out there?
View 3 Replies
Dec 1, 2010
I can remember reading something on this in a book but I can't remember. How do you ensure that certain graphics have been loaded to the users computer before any of the page is rendered?
View 2 Replies
Jan 9, 2011
I have a CalendarExtender that links to Textbox. I can get the calendar to appear below the textbox when the textbox is clicked. That works fine. However, when the calendar appears, I can still see other textboxes/labels/etc. along with the month. This isn't right. The month's graphic should be opaque and I shouldn't see other textboxes or labels or whatever was there. As it is it's difficult to see weekday or dates on the calendar since it's being mixed with labels and textboxes. Why is it doing this?
View 2 Replies
May 14, 2010
Can we Make Graphs To display the data in graphics in asp.net?
View 2 Replies
Feb 11, 2011
i had draw a graph, however i want to display it. can display it to literal?
below is my coding:
' Create an in-memory bitmap where you will draw the image.
' The Bitmap is 300 pixels wide and 200 pixels high.
myImage = New Bitmap(1200, 1200, pixelFormat.Format48bppRgb)
' Get the graphics context for the bitmap.
g = Graphics.FromImage(myImage)
g.DrawString(I_fault_all2(i), New Font("Verdana", 12, FontStyle.Bold), Brushes.Black, xInterval * i + 50 + (width / 3), 500)
g.DrawString(I_total(i), New Font("Verdana", 12, FontStyle.Bold), Brushes.Black, xInterval * i + 50 + (width / 3), 500 - height - 25)
' Draw the axes
g.DrawLine(Pens.Blue, 30, 10, 30, 500)
' y-axis
g.DrawLine(Pens.Brown, 20, 500, 490, 500)
' x-axis
here is the coding i don't want as display as below, because it will go to a new screen without header and template.
[Code]....
View 1 Replies
Jun 2, 2010
I'm trying to rescale uploaded jpeg in asp.netSo I go:
Image original = Image.FromStream(myPostedFile.InputStream);
int w=original.Width, h=original.Height;
using(Graphics g = Graphics.FromImage(original))
{
[code]...
View 2 Replies
Apr 8, 2010
I am having 2 textbox fields named date of birth and age. I have coded in C# in the textchanged event of Date of Birth text field to calculation age and display it in the age text field. For this i have given autopostback true to Date of birth field. I want to calculate age without autopostback,
View 7 Replies
Jul 15, 2010
I'm new to .NET and converting and proper way to convert strings to other values. Specifically, here is a situation I'm facing:
I'm returning two values from a datasource as strings. One values is a representation of a span of time, and another is a count of how many attempts to access a system took place within the span of time.
Given these parameters (for example):
Span of time: 00:01:00
Attempts: 13
I'd like to calculate a third value that shows how many seconds each attempt to connect took place during that span of time. This involves converting the time span to seconds and then dividing by attempts. Where I am getting lost is with the conversion of types. I know the span of time needs to be converted to a date, reduced to seconds, then converted to a number to be divided by the attempts field, also converted to a number.
I've been playing around with code segments like this all morning to no avail:
VBNET Code:
Dim thisTime As String = "00:01:00"
Dim thisAttempts As String = "13"
Label1.Text = thisTime
Label2.Text = thisAttempts
Label3.Text = Math.Round(Integer.Parse(Convert.ToDateTime(Label1.Text)) / Integer.Parse(Label2.Text), 2)
View 2 Replies
Mar 22, 2010
I'm working on an ASP.NET web app where I'm using a Wizard to take the client through a large series of steps.One of the steps includes calculating a bunch of numbers on the fly... the numbers calculate properly but when I click "next" and then go back again... some of the numbers are not retained.
function CalculateFields() {
txtSellingPrice = document.getElementById('<%=txtSellingPrice.ClientID %>');
//I get all of the elements like this...
//...
var regexp = /[$,]/g;xt" and then "previous"
[code]...
View 1 Replies
Jan 24, 2011
I want to enforce some calculation to my project, my requirement as follows. I have txtQtyReq,txtQtyyRec,txtQtyShor(All are 3 textboxes) on load all the 3 textbox/columns should show as "0".(QtyShort=QtyReq-QtyRec)I need to calculate/implement this in txtQtyShort column. when i give a value in txtQtyReq as "50" ,it should calculate QtyShort and display as 50.
txtQtyReq txtQtyRec
txtQtyShort(=txtQtyReq-txtQtyRec)
0 0 0
50 0 50
50 20 30
txtQtyReq=Quantity Required
txtQtyRec=Quantity Received
txtQtyShort=Qunatity short
View 13 Replies
May 23, 2010
I am doing small banking project in that i want to create calculations on interest. in which i have to create that in stored procedures or userdefined funcations
View 1 Replies
May 13, 2010
I'm building a site where users can purchase 'credits' and buy items on the website with them. I'm wondering, what is the best way of storing the user's overall Credits value? Is it best to do a SUM() of all Credits they have purchased before from the 'Credits.Orders' table, or for performance purposes when they add credits to their account, should it increase a 'Credits' field value in a 'Users' table? For consistency purposes I would like to go with the first option, but the second option sounds better in terms of not running loads of pointless calculations every time I need to know their credit value.
View 1 Replies
Nov 29, 2010
image of my listview: I want to total every row from my listview tallies total infected people and percentage
CityID | City | Population | Male | Female | Total | Percentage |
Population, male, and female columns are user inputs total column is male+female textbox value per row percentage= (total/population)*100 also per row to calculate total and percentage on every textchange
<asp:ListView ID="ListView1" runat="server">
<LayoutTemplate>
<table style="border: solid 2px #336699;" cellspacing="0" cellpadding="3" rules="all">
<tr style="background-color: #336699; color: White;">
<th>City</th>
<th>Population</th>
<th>Male</th>
<th>Female</th>
<th>Total</th>
<th>%</th>
</tr>
<tbody>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td> <asp:Label ID="lblCtyID" runat="server" Text='<%# Bind("CityID") %>' /> </td>
<td> <asp:Label ID="lblCty" runat="server" Text='<%# Bind("CityName") %>'/> </td>
<td><asp:TextBox ID="txtPopu" runat="server"/></td>............................
View 2 Replies
Mar 20, 2010
i am building a small library system and i am at the part where i need to calculate wether the book is overdue and issue a fine atm i have a filter search which finds the Loan through the book copy number and ISBN number this displays the userid and the start date of which the loan was issued in a gridview, i then added a colum to the loan table to allow the "librarian" to insert the return date of the book with the update feature on the gridview, and then once then update is made make a calucation with those 2 dates
and either issue a output of "thanks for returning the book" or "you book is overdue by. and your charge is ..." depending on the results. the oveduerate is if its overdue by 14days then add £0.20 for everyday over sorry for the long description and thought id say iam just started to learn asp.net. i am building this in Visual Studio and C#
View 16 Replies
Jan 28, 2011
I want to enforce some calculation to my project, my requirement as follows. I have txtQtyReq,txtQtyyRec,txtQtyShor(All are 3 textboxes) on load all the 3 textbox/columns should show as "0".(QtyShort=QtyReq-QtyRec)I need to calculate/implement this in txtQtyShort column.when i give a value in txtQtyReq as "50" ,it should calculate QtyShort and display as 50.
txtQtyReq txtQtyRec txtQtyShort(=txtQtyReq-txtQtyRec)
0 0 0
50 0 50
50 20 30
txtQtyReq=Quantity Required
txtQtyRec=Quantity Received
txtQtyShort=Qunatity short
I got an excellant solution as follows.
[Code]....
View 8 Replies
Dec 23, 2010
I'm working in a ASP.NET project wich is suposed to do several financial calculantions involving potentiations, nth roots, etc. For this first operations, I can easily solve the problem using Math. But, for calculating work days - like Excel, or monthly loan payment, interest rates, etc. - like HP 12C, there is a library that implements these functions?
View 2 Replies
Jun 3, 2010
I have a gridview with the following columns: months, number of injury, expenses. my month column is a string, my number of injury column is a number and my expenses column is a number. I need to first obtain the month column as an integer and then obtain the number of injury column in my gridview. Once these columns are obtained, I want to be able to get the total number of injuries. How do I solve the problem. First obtain the month column and change it to an interger or gridview
Next obtain the injury column and then add each row in the injury column to get the total number of injuries.
View 9 Replies