L_EfxDraw3dShape
#include "l_bitmap.h"
L_INT EXT_FUNCTION L_EfxDraw3dShape(hDC, uShape, pRect, crBack, hdcBack, prcBack, uBackStyle, crFill, uFillStyle, crBorder, uBorderStyle, uBorderWidth, crInnerHilite, crInnerShadow, uInnerStyle, uInnerWidth, crOuterHilite, crOuterShadow, uOuterStyle, uOuterWidth, nShadowX, nShadowY, crShadow, hRgn)
HDC hDC; |
/* handle to the target device context */ |
L_UINT uShape; |
/* type of shape */ |
RECT L_FAR * pRect; |
/* pointer to the display rectangle */ |
COLORREF crBack; |
/* background color */ |
HDC hdcBack; |
/* handle to the device context for background */ |
RECT L_FAR * prcBack; |
/* pointer to the display background rectangle */ |
L_UINT uBackStyle; |
/* background style */ |
COLORREF crFill; |
/* foreground color */ |
L_UINT uFillStyle; |
/* foreground style */ |
COLORREF crBorder; |
/* border color */ |
L_UINT uBorderStyle; |
/* border style */ |
L_UINT uBorderWidth; |
/* border width */ |
COLORREF crInnerHilite; |
/* inner band highlight color */ |
COLORREF crInnerShadow; |
/* inner band shadow color */ |
L_UINT uInnerStyle; |
/* inner band style */ |
L_UINT uInnerWidth; |
/* inner band width */ |
COLORREF crOuterHilite; |
/* outer band highlight color */ |
COLORREF crOuterShadow; |
/* outer band shadow color */ |
L_UINT uOuterStyle; |
/* outer band style */ |
L_UINT uOuterWidth; |
/* outer band width */ |
L_INT nShadowX; |
/* horizontal position of the shadow */ |
L_INT nShadowY; |
/* vertical position of the shadow */ |
COLORREF crShadow; |
/* shadow color */ |
HRGN hRgn; |
/* region handle */ |
Draws the specified three-dimensional shape into the target device context using the specified color, style, and size.
Parameter |
Description |
|
hDC |
Handle to the target device context. |
|
uShape |
Shape type. For valid values, refer to Effect Shapes. |
|
pRect |
Pointer to the display destination rectangle. |
|
crBack |
COLORREF value that specifies the background color. |
|
hdcBack |
Handle to the source device context for background. Use this parameter and prcBack to place an image from another device context into the background of the shape. To use a background image, the uFillStyle parameter must not be EFX_FILLSTYLE_SOLID. |
|
prcBack |
Pointer to the display background rectangle. |
|
uBackStyle |
Background style. For valid values, refer to Effect Background Styles. |
|
crFill |
COLORREF value that specifies the foreground color. |
|
uFillStyle |
Foreground style. The following are valid values: |
|
|
Value |
Meaning |
|
EFX_FILLSTYLE_SOLID |
Solid filling |
|
EFX_FILLSTYLE_TRANSPARENT |
Transparent filling |
|
EFX_FILLSTYLE_HORIZONTAL |
Horizontal lines (==) |
|
EFX_FILLSTYLE_VERTICAL |
Vertical lines (||) |
|
EFX_FILLSTYLE_FDIAGONAL |
Downward diagonal lines (//) |
|
EFX_FILLSTYLE_BDIAGONAL |
Upward diagonal lines (\\) |
|
EFX_FILLSTYLE_CROSS |
Cross lines (++) |
|
EFX_FILLSTYLE_DIAGCROSS |
Diagonal cross lines (XX) |
crBorder |
COLORREF value that specifies the border color. |
|
uBorderStyle |
Border style. The following are valid values: |
|
|
Value |
Meaning |
|
EFX_BORDERSTYLE_TRANSPARENT |
Transparent |
|
EFX_BORDERSTYLE_SOLID |
Solid line |
|
EFX_BORDERSTYLE_DASH |
Dash line (valid only for 1-pixel lines) |
|
EFX_BORDERSTYLE_DOT |
Dot line (valid only for 1-pixel lines) |
|
EFX_BORDERSTYLE_DASHDOT |
Dash dot line (valid only for 1-pixel lines) |
|
EFX_BORDERSTYLE_DASHDOTDOT |
Dash dot dot line (valid only for 1-pixel lines) |
uBorderWidth |
Border width. |
|
crInnerHilite |
COLORREF value that specifies the inner band highlight color. |
|
crInnerShadow |
COLORREF value that specifies the inner band shadow color. |
|
uInnerStyle |
Inner band style. The following are valid values: |
|
|
Value |
Meaning |
|
EFX_INNERSTYLE_NONE |
None |
|
EFX_INNERSTYLE_INSET |
Inner band inset |
|
EFX_INNERSTYLE_RAISED |
Inner band raised |
|
The inner band is available only for squares and rectangles. |
|
uInnerWidth |
Inner band width. |
|
crOuterHilite |
COLORREF value that specifies the outer band highlight color. |
|
crOuterShadow |
COLORREF value that specifies the outer band shadow color. |
|
uOuterStyle |
Outer band style. The following are valid values: |
|
|
Value |
Meaning |
|
EFX_OUTERSTYLE_NONE |
None |
|
EFX_OUTERSTYLE_INSET |
Outer band inset |
|
EFX_OUTERSTYLE_RAISED |
Outer band raised |
uOuterWidth |
Outer band width. |
|
nShadowX |
Horizontal position of the shadow. |
|
nShadowY |
Vertical position of the shadow. |
|
crShadow |
COLORREF value that specifies the shadow color. |
|
hRgn |
Handle to a Windows region that defines the shape. This parameter is used only if the uShape parameter is EFX_SHAPE_REGION. |
Returns
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
Comments
Use hdcBack and prcBack to place an image from another device context into the background of the shape.
For general information, refer to Implementing Special Effects.
Required DLLs and Libraries
LTEFX For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Platforms
Windows 95 / 98 / Me, Windows 2000 / XP.
See Also
Functions: |
L_EfxDraw3dText, L_EfxDrawFrame, L_EfxDrawRotated3dText, L_EfxEffectBlt, L_EfxGradientFillRect, L_EfxPaintBitmap, L_EfxPaintTransition, L_EfxPatternFillRect |
Topics: |
|
|
Example
/* This example shows the minimum requirements for using L_EfxDraw3dShape */
void TestFunction( HWND hWnd, RECT *pDest )
{
HDC hdc; /* Device context for the current window */
HPALETTE hSavedPalette = NULL; /* Temporary copy of the current system palette */
HPALETTE hOurPalette = NULL; /* The palette that we will use to paint */
L_INT nBitsPerPixel;
HDC hdcMem; /* HDC for background image */
HBITMAP hbmMem; /* Bitmap for background image */
RECT rcbm;
/* Get the device context */
hdc = GetDC (hWnd);
/* Check the device to see if we need a palette */
nBitsPerPixel = GetDeviceCaps( hdc, BITSPIXEL ) * GetDeviceCaps ( hdc, PLANES );
if ( nBitsPerPixel <=8 )
{
hOurPalette = (HPALETTE)GetStockObject (DEFAULT_PALETTE);
hSavedPalette = SelectPalette (hdc, hOurPalette, FALSE);
/* Realize our palette */
RealizePalette (hdc);
}
/* Create the gradient for the background of the 3D shape */
rcbm.top = pDest->top;
rcbm.left = pDest->left;
rcbm.bottom = pDest->bottom;
rcbm.right = pDest->right;
OffsetRect(&rcbm, -pDest->left, -pDest->top);
hdcMem = CreateCompatibleDC(hdc);
hbmMem = CreateCompatibleBitmap(hdc, rcbm.right, rcbm.bottom);
hbmMem = (HBITMAP)SelectObject(hdcMem, hbmMem);
/* Place a gradient in the background of the 3D shape */
L_EfxGradientFillRect ( hdcMem,
&rcbm,
EFX_GRADIENT_LINE_L_TO_R,
RGB(255, 0, 0),
RGB(0, 0, 255),
16 );
/* Draw the 3D shape */
L_EfxDraw3dShape ( hdc, /* device context */
EFX_SHAPE_STAR4, /* star shape */
pDest, /* destination rectangle */
RGB ( 0,0,255 ), /* background color, blue */
hdcMem, /* use this to place an image in the background */
&rcbm, /* display background rectangle */
EFX_BACKSTYLE_TRANSLUCENTTILEDIMAGE,/* style flags for 3D shape */
RGB (255,0,0 ), /* foreground color, red */
EFX_FILLSTYLE_TRANSPARENT,/* foreground style */
RGB ( 255,0,0 ), /* border color, red */
EFX_BORDERSTYLE_SOLID, /* border style */
5, /* border width */
RGB ( 255,255,255 ), /* inner band highlight color, white */
RGB ( 128,128,128 ), /* inner band shadow color */
EFX_INNERSTYLE_INSET,/* inner band style */
3, /* inner band width */
RGB ( 255,0,0 ), /* outer band highlight color, RED */
RGB ( 128,128,128 ), /* outer band shadow color */
EFX_OUTERSTYLE_INSET,/* outer band style */
3, /* outer band width */
2, /* horizontal shadow position */
2, /* vertical shadow position */
RGB ( 0,0,0 ), /* shadow color, black */
NULL ); /* no region handle */
/* Restore the old palette */
if ( hOurPalette )
SelectPalette (hdc, hSavedPalette, FALSE);
/* Release the device context */
ReleaseDC(hWnd, hdc);
DeleteObject(SelectObject(hdcMem, hbmMem));
DeleteDC(hdcMem);
return;
}