一个用渐变色填充矩形的函数

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

以下代码主要来源于CodeProject上一个用渐变色填充DC的static控件中的一部分代码。

这是要使用的函数原型:

typedef UINT (CALLBACK* LPGNDLLFUNC)(HDC,CONST PTRIVERTEX,DWORD,CONST PVOID,DWORD,DWORD);

HINSTANCEhinst_msimg32 = NULL;

static LPGNDLLFUNCpdllfunc_GradientFill;

初始化:

hinst_msimg32 = LoadLibrary( "msimg32.dll" );

if( hinst_msimg32 )

{

pdllfunc_GradientFill = ((LPGNDLLFUNC) GetProcAddress( hinst_msimg32, "GradientFill" ));

}

函数定义:

/*

* 在pDCMem上以FillMode模式填充矩形区域pRect

* pDcMem为要绘制的DC

* pRect为矩形区域

* FillMode包括横向填充与纵向填充两个

* crHiColor为渐变色的一端,另一端默认为白色

* bReverse是否逆向填充,即由白色渐变到cfHiColor还是由crHiColor渐变到白色

*/

void DrawGradientFill(CDC* pDCMem, CRect* pRect, BackFillMode FillMode, COLORREF crHiColor, BOOL bReverse)

{

TRIVERTEX rcVertex[2];

COLORREF crLoColor = RGB(255,255,255);

if (bReverse)

{

crLoColor = crHiColor;

crHiColor = RGB(255,255,255);

}

rcVertex[0].x=pRect-left;

rcVertex[0].y=pRect-top;

rcVertex[0].Red=GetRValue(crLoColor)right;

rcVertex[1].y=pRect-bottom;

rcVertex[1].Red=GetRValue(crHiColor)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航