|
code
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Finding the leftmost pixel in a piece of text when using GDI+left and right edges of the buttons to be a certain number of pixels from the start and end of the text, I need to know (or be able to calculate) the left and rightmost pixels of the text. However, this is a problem because not all letters have their leftmost pixel at the same X position. For example, when using the following font: Dim buttonfont As New Font("Arial", 19, FontStyle.Bold, GraphicsUnit.Point) and using the following lines to draw text: For i As Integer = 65 To 90 testgraphics.DrawString(Chr(i), buttonfont, Brushes.White, 0, 35 + (i - 64) * 20) Next The characters 'A' and 'J' start 2 pixels farther to the left than most other characters (there are also a couple other characters that are offset by 1 or 2 pixels). Is there any easy way to determine what X position the first and last pixel of a character is at? Because this depends on the font, the only way to do it manually would be to test each pixel. Is there a method that can be used to do this? Thanks. If this is an offline process, testing each column of pixels should be
enough. You could also try http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_52at.asp and in particular the GLYPHMETRICS structure that should allow to get the "box" in which the character is drawn... Patrice -- Show quoteHide quote"Nathan Sokalski" <njsokal***@hotmail.com> a écrit dans le message de news:OCD%23td5eFHA.2888@TK2MSFTNGP15.phx.gbl... > I am using GDI+ to generate buttons in my application. Because I want the > left and right edges of the buttons to be a certain number of pixels from > the start and end of the text, I need to know (or be able to calculate) the > left and rightmost pixels of the text. However, this is a problem because > not all letters have their leftmost pixel at the same X position. For > example, when using the following font: > > Dim buttonfont As New Font("Arial", 19, FontStyle.Bold, GraphicsUnit.Point) > > > and using the following lines to draw text: > > For i As Integer = 65 To 90 > > testgraphics.DrawString(Chr(i), buttonfont, Brushes.White, 0, 35 + (i - 64) > * 20) > > Next > > > The characters 'A' and 'J' start 2 pixels farther to the left than most > other characters (there are also a couple other characters that are offset > by 1 or 2 pixels). Is there any easy way to determine what X position the > first and last pixel of a character is at? Because this depends on the font, > the only way to do it manually would be to test each pixel. Is there a > method that can be used to do this? Thanks. > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > > Do you know of anywhere where I can see an example? Thanks.
Show quoteHide quote "Patrice" <nob***@nowhere.com> wrote in message news:OcA9bt7eFHA.3712@TK2MSFTNGP09.phx.gbl... > If this is an offline process, testing each column of pixels should be > enough. > > You could also try > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_52at.asp > and in particular the GLYPHMETRICS structure that should allow to get the > "box" in which the character is drawn... > > Patrice > -- > > "Nathan Sokalski" <njsokal***@hotmail.com> a écrit dans le message de > news:OCD%23td5eFHA.2888@TK2MSFTNGP15.phx.gbl... >> I am using GDI+ to generate buttons in my application. Because I want the >> left and right edges of the buttons to be a certain number of pixels from >> the start and end of the text, I need to know (or be able to calculate) > the >> left and rightmost pixels of the text. However, this is a problem because >> not all letters have their leftmost pixel at the same X position. For >> example, when using the following font: >> >> Dim buttonfont As New Font("Arial", 19, FontStyle.Bold, > GraphicsUnit.Point) >> >> >> and using the following lines to draw text: >> >> For i As Integer = 65 To 90 >> >> testgraphics.DrawString(Chr(i), buttonfont, Brushes.White, 0, 35 + (i - > 64) >> * 20) >> >> Next >> >> >> The characters 'A' and 'J' start 2 pixels farther to the left than most >> other characters (there are also a couple other characters that are >> offset >> by 1 or 2 pixels). Is there any easy way to determine what X position the >> first and last pixel of a character is at? Because this depends on the > font, >> the only way to do it manually would be to test each pixel. Is there a >> method that can be used to do this? Thanks. >> -- >> Nathan Sokalski >> njsokal***@hotmail.com >> http://www.nathansokalski.com/ >> >> > > Try around :
http://cvs.sourceforge.net/viewcvs.py/numerator/test/FontTester/Form1.cs?rev=1.2 I've done a search using gmBlackBoxX (you could use any other name that belongs to this structure) on Google... Good luck. -- Show quoteHide quotePatrice "Nathan Sokalski" <njsokal***@hotmail.com> a écrit dans le message de http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_52at.aspnews:%23lFRkUDfFHA.3528@TK2MSFTNGP10.phx.gbl... > Do you know of anywhere where I can see an example? Thanks. > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > > "Patrice" <nob***@nowhere.com> wrote in message > news:OcA9bt7eFHA.3712@TK2MSFTNGP09.phx.gbl... > > If this is an offline process, testing each column of pixels should be > > enough. > > > > You could also try > > Show quoteHide quote > > and in particular the GLYPHMETRICS structure that should allow to get the > > "box" in which the character is drawn... > > > > Patrice > > -- > > > > "Nathan Sokalski" <njsokal***@hotmail.com> a écrit dans le message de > > news:OCD%23td5eFHA.2888@TK2MSFTNGP15.phx.gbl... > >> I am using GDI+ to generate buttons in my application. Because I want the > >> left and right edges of the buttons to be a certain number of pixels from > >> the start and end of the text, I need to know (or be able to calculate) > > the > >> left and rightmost pixels of the text. However, this is a problem because > >> not all letters have their leftmost pixel at the same X position. For > >> example, when using the following font: > >> > >> Dim buttonfont As New Font("Arial", 19, FontStyle.Bold, > > GraphicsUnit.Point) > >> > >> > >> and using the following lines to draw text: > >> > >> For i As Integer = 65 To 90 > >> > >> testgraphics.DrawString(Chr(i), buttonfont, Brushes.White, 0, 35 + (i - > > 64) > >> * 20) > >> > >> Next > >> > >> > >> The characters 'A' and 'J' start 2 pixels farther to the left than most > >> other characters (there are also a couple other characters that are > >> offset > >> by 1 or 2 pixels). Is there any easy way to determine what X position the > >> first and last pixel of a character is at? Because this depends on the > > font, > >> the only way to do it manually would be to test each pixel. Is there a > >> method that can be used to do this? Thanks. > >> -- > >> Nathan Sokalski > >> njsokal***@hotmail.com > >> http://www.nathansokalski.com/ > >> > >> > > > > > >
Validation controls validate before form submits
Who is the true Asp.Net MVP here? binding - DropDownList flaw/bug? asp 2.0 wizard control (how to set focus on button) Can't get the Microsoft Web Library Trying hard to implement globalisation. Strange error message(urgent help needeed) How to view properties of control inside table Client Side Calculation involving controls in datagrid template co Dragging and Dropping HTML instead of text DropDownList replaces the & with & |
|||||||||||||||||||||||