# include“LtPnt.h”
L_LTPNT_APIL_INTL_PntRegionColor(油漆,UserDC, crColor, phDestRgn)
创建包含指定颜色的区域。
指向油漆句柄的指针。
要用作显示表面的设备上下文(如屏幕)的句柄。该参数也可以为NULL。设备上下文的映射模式必须为MM_TEXT。
COLORREF值,指定用于创建区域的颜色。
指向要用结果区域更新的区域句柄的指针。
价值 | 意义 |
---|---|
成功 | 活动很成功。 |
< 1 | 发生错误。指返回代码. |
区域创建过程将使用当前区域属性执行。要确定当前区域属性,请调用L_PntGetProperty.要设置或更改当前区域属性,请调用L_PntSetProperty.有关区域属性的详细信息,请参阅PAINTREGION结构。
在创建新区域时,该函数还将使用当前绘画转换信息。要获取当前绘画转换信息,请调用L_PntGetTransformation.要更改或设置绘画转换信息,请调用L_PntSetTransformation.
如果用户在工具箱中设置了位图,则使用该函数L_PntSetMetrics,然后工具箱将为位图创建区域。否则,工具箱将为指定的设备上下文创建区域。
如果UserDC不为NULL,用户应该在调用此函数之前设置DC边界L_PntSetDCExtents.
下面的图像显示了单击黄色区域内创建的区域。
必需的dll和库
L_INT pntregioncoloreexample (HWND HWND)
{
L_INT nRet;
油漆;
HDC HDC;
PAINTSHAPE形状;
RECT rcShape;
rcDCExtents;
HRGN HRGN;
/*启动Paint工具箱*/
nRet = L_PntInit (&pPaint);
如果(SUCCESS != nRet)
{
返回nRet;
}
获取要在*/上绘制的设备上下文
hDC = GetDC (hWnd);
/*设置所需的形状属性*/
形状。nSize =运算符(漆形);
形状。dwMask = PSF_BORDERWIDTH | . dwMask = PSF_BORDERWIDTH
PSF_BORDERCOLOR |
PSF_BORDERENDCAP |
PSF_BACKGROUNDSTYLE |
PSF_GRADIENTSTARTCOLOR |
PSF_GRADIENTENDCOLOR;
形状。nBorderWidth = 10;
形状。crBorderColor = RGB (0, 255,0);
形状。nBorderEndCap = PAINT_SHAPE_BORDER_ENDCAP_ROUND;
形状。nBackgroundStyle = PAINT_SHAPE_BACK_STYLE_GRADIENT;
形状。crGradientStartColor = RGB (255, 255, 255);
形状。crGradientEndColor = RGB (255,255,0);
/*设置新形状属性*/
nRet = L_PntSetProperty(油漆,PAINT_GROUP_SHAPE, &形状);
如果(nRet != SUCCESS)
返回nRet;
/*设置DC尺寸的坐标*/
SetRect (&rcShape, 10,10,60,60);
/*获取目标DC尺寸*/
GetClientRect (hWnd, &rcDCExtents);
/*设置toolkit用户DC区*/
nRet = L_PntSetDCExtents(油漆,&rcDCExtents);
如果(nRet != SUCCESS)
返回nRet;
/*使用当前形状属性绘制一个椭圆到DC (hDC) */
nRet = L_PntDrawShapeEllipse(油漆,hDC, &rcShape);
如果(nRet != SUCCESS)
返回nRet;
SetRect (&rcShape, 100, 10, 150, 60);
nRet = L_PntDrawShapeEllipse(油漆,hDC, &rcShape);
如果(nRet != SUCCESS)
返回nRet;
SetRect (&rcShape, 60, 60, 95, 95);
nRet = L_PntDrawShapeRectangle(油漆,hDC, &rcShape);
如果(nRet != SUCCESS)
返回nRet;
SetRect (&rcShape, 10,100,60,150);
nRet = L_PntDrawShapeEllipse(油漆,hDC, &rcShape);
如果(nRet != SUCCESS)
返回nRet;
SetRect (&rcShape, 100,100,150,150);
nRet = L_PntDrawShapeEllipse(油漆,hDC, &rcShape);
如果(nRet != SUCCESS)
返回nRet;
/*创建区域*/
nRet = L_PntRegionColor(油漆,hDC, RGB (0, 255,0), &hRgn);
如果(nRet != SUCCESS)
返回nRet;
/*显示创建的区域*/
FrameRgn (hDC, hRgn, (HBRUSH) GetStockObject (BLACK_BRUSH), 1,1);
/*释放设备上下文*/
ReleaseDC (hWnd, hDC);
/*删除区域*/
DeleteObject (hRgn);
/*释放油漆工具手柄*/
L_PntFree(油漆);
返回成功;
}