Jump to content

  • Log In with Google      Sign In   
  • Create Account

#ActualTom KQT

Posted 04 November 2013 - 07:36 AM

 

Before using "DrawTextA", how would I get the size of TTF text width in pixels?

(I need to know it for horizontal positioning on the screen)

 

Hi,

not sure if I understand you correctly - you want to be able to get the text size before you draw it using DrawTextA? And DrawTextA is a method of the ID3DXFont interface?

If yes, then the answer is very simple - the function allows you to calculate the size of the text without drawing it.

You need to use the flag DT_CALCRECT in the format parameter and then the function will not draw the text, but will modify the rectangle you passed - the new rectangle will contain size of the text. See the documentation for more details ID3DXFont::DrawText.

 

Btw, the D3DXFont interface is quite slow, if you are drawing a lot of text, you'll probably want to use another system for text rendering (maybe your own...). But if you want to stick with D3DXFont for a while, you at least should properly use the first argument - the ID3DXSprite pointer. Again, read the documentation for more details. (You create one D3DXSprite object and pass it to every DrawText call.)

 

 

 

You can use the GetTextExtentXXX function family, e.g. http://msdn.microsoft.com/en-us/library/dd144938%28v=vs.85%29.aspx.

To get the pixels from the logical units: http://msdn.microsoft.com/en-us/library/windows/desktop/dd145042%28v=vs.85%29.aspx

That doesn't have to correspond to the real rendering. It's not sure that D3DXFont draws the text with 100 % accuracy related to these theoretical measurements provided by GDI. By asking the D3DXFont interface you know that you really get the right numbers, because it knows how it's going to render the text ;)


#3Tom KQT

Posted 04 November 2013 - 07:32 AM

 

Before using "DrawTextA", how would I get the size of TTF text width in pixels?

(I need to know it for horizontal positioning on the screen)

 

Hi,

not sure if I understand you correctly - you want to be able to get the text size before you draw it using DrawTextA? And DrawTextA is a method of the ID3DXFont interface?

If yes, then the answer is very simple - the function allows you to calculate the size of the text without drawing it.

You need to use the flag DT_CALCRECT in the format parameter and then the function will not draw the text, but will modify the rectangle you passed - the new rectangle will contain size of the text. See the documentation for more details ID3DXFont::DrawText.

 

Btw, the D3DXFont interface is quite slow, if you are drawing a lot of text, you'll probably want to use another system for text rendering (maybe your own...). But if you want to stick with D3DXFont for a while, you at least should properly use the first argument - the ID3DXSprite pointer. Again, read the documentation for more details. (You create one D3DXSprite object and pass it to every DrawText call.)


#2Tom KQT

Posted 04 November 2013 - 07:30 AM

 

Before using "DrawTextA", how would I get the size of TTF text width in pixels?

(I need to know it for horizontal positioning on the screen)

 

Hi,

not sure if I understand you correctly - you want to be able to get the text size before you draw it using DrawTextA? And DrawTextA is a method of the ID3DXFont interface?

If yes, then the answer is very simple - the function allows you to calculate the size of the text without drawing it.

You need to use the flag DT_CALCRECT in the format parameter and then the function will not draw the text, but will modify the rectangle you passed - the new rectangle will contain size of the text. See the documentation for more details ID3DXFont::DrawText.

 

Btw, the D3DXFont interface is quite slow, if you are drawing a lot of text, you'll probably want to use another system for text rendering (maybe your own...). But if you want to stick with D3DXFont for a while, you at least should properly use the first argument - the ID3DXSprite pointer. Again, read the documentation for more details.


#1Tom KQT

Posted 04 November 2013 - 07:29 AM

 

Before using "DrawTextA", how would I get the size of TTF text width in pixels?

(I need to know it for horizontal positioning on the screen)

 

Hi,

not sure if I understand you correctly - you want to be able to get the text size before you draw it using DrawTextA? And DrawTextA is a method of the ID3DXFont interface?

If yes, then the answer is very simple - the function allows you to calculate the size of the text without drawing it.

You need to use the flag DT_CALCRECT in the format parameter and then the function will not draw the text, but will modify the rectangle you passed - the new rectangle will contain size of the text. See the documentation for more details ID3DXFont::DrawText.

 

Btw, the D3DXFont interface is quite slow, if you are drawing a lot of thext, you'll probably want to use another system for text rendering (maybe your own...). But if you want to stick with D3DXFont for a while, you at least should properly use the first argument - the ID3DXSprite pointer. Again, read the documentation for more details.


PARTNERS