Low-Level DigitalPaint: Drawing Text

Start with the project you created in Low-Level DigitalPaint: Filling an Area.

 

1.

Add the following item to the popup menu "Painting Test " that you added to the main menu:

 

&Painting Test

 

 

&Text

with ID = IDM_PAINTTEST_TEXT

2.

Add the following function before the OnOpen function definition:

 

static L_VOID OnText ( HWND hWnd, pPAINTHANDLE pPaint ) 
{
   HDC hDC ;
   PAINTTEXT text ;
   RECT rcText ;
   LOGFONT lf ; 
   HFONT hFont ;


   // Get device context to draw on 
   hDC = GetDC ( hWnd ) ;

   // Set the required text font properties 
   lf.lfHeight = 48 ;
   lf.lfWidth = 0 ;
   lf.lfEscapement = 0 ;
   lf.lfOrientation = 0 ;
   lf.lfWeight = FW_NORMAL ;
   lf.lfItalic = FALSE ;
   lf.lfUnderline = FALSE ;
   lf.lfStrikeOut = FALSE ;
   lf.lfCharSet = ANSI_CHARSET ;
   lf.lfOutPrecision = OUT_DEFAULT_PRECIS ;
   lf.lfClipPrecision = CLIP_DEFAULT_PRECIS ;
   lf.lfQuality = DEFAULT_QUALITY ;
   lf.lfPitchAndFamily = FF_DONTCARE ;
   lstrcpy ( lf.lfFaceName, TEXT("Times New Roman")) ;

   // Create the desired text font 
   hFont = CreateFontIndirect ( &lf ) ;

   // Set the desired text properties 
   text.nSize = sizeof ( PAINTTEXT )  ;
   text.dwMask = PTF_TEXT | PTF_FONT | PTF_TRANSFORMINFO ; 
   text.pszText = TEXT("LEAD") ;
   text.hFont = hFont ;
   text.TransformInfo.Scale.cx = 100 ;
   text.TransformInfo.Scale.cy = 100 ;
   text.TransformInfo.nRotate = 45 ;
   
   // Set the new text properties 
   L_PntSetProperty ( pPaint, PAINT_GROUP_TEXT, &text ) ;

   // Set the target text drawing box coordinates with respect to the DC dimensions 
   SetRect ( &rcText, 10, 10, 200, 200 ) ;

   // Use the current text properties and the current transformations properties 
   // to draw the text to the DC 
   L_PntApplyText ( pPaint, hDC, &rcText ) ;

   // Delete the font object
   DeleteObject ( hFont ) ;

   // Release the device context 
   ReleaseDC ( hWnd, hDC ) ;
}

 

3.

Add the following line after the "return 0L ;" of the "case IDM_PAINTTEST_FILL:" statement:

 

case IDM_PAINTTEST_TEXT:
       OnText ( hWnd, pPaint ) ;
       return 0L ;

 

4.

Compile and run the project by selecting Build->Execute tutorial.exe from the menu.

5.

Go to the "File" menu and use the "Open…" item to open an image.

6.

Go to the "Painting Test" and select the "Text" item. This will draw a text using the current text group properties.