Low-Level DigitalPaint: Creating a Region
Start with the project you created in Low-Level DigitalPaint: Painting Using a Shape.
1. |
Add the following item to the popup menu "Painting Test " that you added to the main menu: |
|
|
&Painting Test |
|
|
&Region |
with ID = IDM_PAINTTEST_REGION |
2. |
Add the following function before the OnOpen function definition: |
static L_VOID OnRegion ( HWND hWnd, pPAINTHANDLE pPaint )
{
HDC hDC ;
PAINTREGION region ;
RECT rcRegion ;
HRGN hRgn ;
region.nSize = sizeof ( PAINTREGION ) ;
region.dwMask = PRF_ROUNDRECTELLIPSEWIDTH |
PRF_ROUNDRECTELLIPSEHEIGHT ;
region.nRoundRectEllipseWidth = 40 ;
region.nRoundRectEllipseHeight = 40 ;
// Set the new region properties
L_PntSetProperty ( pPaint, PAINT_GROUP_REGION, ®ion ) ;
// Get the device context
hDC = GetDC ( hWnd ) ;
// Set the coordinates with respect to the DC dimensions
SetRect ( &rcRegion, 10, 10, 200, 200 ) ;
// Use the current region properties and the current painting
// transformations to create a rouned rectangle region
L_PntRegionRoundRect ( pPaint, hDC, &rcRegion, &hRgn ) ;
// View the resulted region
FrameRgn ( hDC, hRgn, GetStockObject ( BLACK_BRUSH ), 1, 1 ) ;
// Delete the region
DeleteRgn ( hRgn ) ;
// Release the device context
ReleaseDC ( hWnd, hDC ) ;
}
3. |
Add the following line after the "return 0L ;" of the "case IDM_PAINTTEST_SHAPE:" statement: |
case IDM_PAINTTEST_REGION:
OnRegion ( 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 "Region" item. This will create a region using the current region properties. |