绘制颜色渐变矩形函数
填充效果如下:
???其中falg指定漸變形式:
??????????? 0:左右漸變。
??????? ??? 1:上下漸變
??????????? 3:中心到左右兩邊漸變
??????????? 4:中心到上下漸變
????????? ???5:中心到四周實(shí)現(xiàn)漸變
void_DrawRect(CDC *pDC,CRect rect,COLORREF
??????????????????? nShadowBeginColor,COLORREF???
???????????? nShadowEndColor,int falg )
{
?????? TRIVERTEX rcVertex[2];
?????? rcVertex[0].x=rect.left;
?????? rcVertex[0].y=rect.top;
?????? rcVertex[0].Red=GetRValue(nShadowBeginColor)<<8;??????
????? rcVertex[0].Green=GetGValue(nShadowBeginColor)<<8;
?????? rcVertex[0].Blue=GetBValue(nShadowBeginColor)<<8;
?????? rcVertex[0].Alpha=0x0000;
?????? rcVertex[1].x=rect.right;
?????? rcVertex[1].y=rect.bottom;
?????? rcVertex[1].Red=GetRValue(nShadowEndColor)<<8;
?????? rcVertex[1].Green=GetGValue(nShadowEndColor)<<8;
?????? rcVertex[1].Blue=GetBValue(nShadowEndColor)<<8;
????? rcVertex[1].Alpha=0;
?
?????? GRADIENT_RECT rect1;
?????? rect1.UpperLeft=0;
????? rect1.LowerRight=1;
?????? if (falg==0)
????????????? handle_GradientFill( pDC->GetSafeHdc
????????????? (),rcVertex,2,&rect1,1,??
???????????? GRADIENT_FILL_RECT_H);
?????? if (falg==1)
????????????? handle_GradientFill( pDC->GetSafeHdc
????????????? (),rcVertex,2,&rect1,1,
???????????? GRADIENT_FILL_RECT_V );
?????? if (falg==3)
?????? {
????????????????? /// Email:?visualsan@yahoo.cn?
????????????? rcVertex[0].x=rect.left;
????????????? rcVertex[0].y=rect.top;
????????????? rcVertex[0].Red=GetRValue(nShadowBeginColor)<<8;???
?? ????????? rcVertex[0].Green=GetGValue(nShadowBeginColor)<<8;
????????????? rcVertex[0].Blue=GetBValue(nShadowBeginColor)<<8;
????????????? rcVertex[0].Alpha=0x0000;
????????????? rcVertex[1].x=rect.right-rect.Width()/2;
????????????? rcVertex[1].y=rect.bottom;
????????????? rcVertex[1].Red=GetRValue(nShadowEndColor)<<8;
????????????? rcVertex[1].Green=GetGValue(nShadowEndColor)<<8;
????????????? rcVertex[1].Blue=GetBValue(nShadowEndColor)<<8;
????????? ?? rcVertex[1].Alpha=0;
????????????? handle_GradientFill(pDC->GetSafeHdc
????????????? (),rcVertex,2,&rect1,1,?
????????????? GRADIENT_FILL_RECT_H);
????????????? rcVertex[0].x=rect.left+rect.Width()/2-1;
????????????? rcVertex[0].y=rect.top;
????????????? rcVertex[0].Red=GetRValue(nShadowEndColor)<<8;?????
???????? ???? rcVertex[0].Green=GetGValue(nShadowEndColor)<<8;
????????????? rcVertex[0].Blue=GetBValue(nShadowEndColor)<<8;
????????????? rcVertex[0].Alpha=0x0000;
????????????? rcVertex[1].x=rect.right;
????????????? rcVertex[1].y=rect.bottom;
????????????? rcVertex[1].Red=GetRValue(nShadowBeginColor)<<8;
????????????? rcVertex[1].Green=GetGValue(nShadowBeginColor)<<8;
????????????? rcVertex[1].Blue=GetBValue(nShadowBeginColor)<<8;
??????? ???? rcVertex[1].Alpha=0;
????????????? handle_GradientFill( pDC->GetSafeHdc
????????????? (),rcVertex,2,&rect1,1,?
????????????? GRADIENT_FILL_RECT_H);
?????? }
?????? if (falg==4)
?????? {??????/// Email:?visualsan@yahoo.cn?
????????????? rcVertex[0].x=rect.left;
????????????? rcVertex[0].y=rect.top;
??????????????rcVertex[0].Red=GetRValue(nShadowBeginColor)
?????????????<< 8;??????????????????????
???????????? ?rcVertex[0].Green=GetGValue(nShadowBeginColor)<<8;
????????????? rcVertex[0].Blue=GetBValue(nShadowBeginColor)<<8;
????????????? rcVertex[0].Alpha=0x0000;
????????????? rcVertex[1].x=rect.right;
????????????? rcVertex[1].y=rect.bottom-rect.Height()/2;
????????????? rcVertex[1].Red=GetRValue(nShadowEndColor)<<8;
????????????? rcVertex[1].Green=GetGValue(nShadowEndColor)<<8;
????????????? rcVertex[1].Blue=GetBValue(nShadowEndColor)<<8;
?????????? ?? rcVertex[1].Alpha=0;
????????????? handle_GradientFill(pDC->GetSafeHdc
????????????? (),rcVertex,2,&rect1,1,?
???????????? ?GRADIENT_FILL_RECT_V);
????????????? rcVertex[0].x=rect.left;
????????????? rcVertex[0].y=rect.top-1+rect.Height()/2;
????????????? rcVertex[0].Red=GetRValue(nShadowEndColor)<<8;
????????????? rcVertex[0].Green=GetGValue(nShadowEndColor)<<8;
????????????? rcVertex[0].Blue=GetBValue(nShadowEndColor)<<8;
????????????? rcVertex[0].Alpha=0x0000;
????????????? rcVertex[1].x=rect.right;
????????????? rcVertex[1].y=rect.bottom;
????????????? rcVertex[1].Red=GetRValue(nShadowBeginColor)<<8;
????????????? rcVertex[1].Green=GetGValue(nShadowBeginColor)<<8;
????????????? rcVertex[1].Blue=GetBValue(nShadowBeginColor)<<8;
???????????? ?rcVertex[1].Alpha=0;
????????????? handle_GradientFill( pDC->GetSafeHdc
????????????? (),rcVertex,2,&rect1,1,?
???????????? GRADIENT_FILL_RECT_V);
?????? }
?????? if (falg==MIDDLE_TO_SIDE)
?
?????? {
????????????? POINT p1,p2,p3,p4,p;
????????????? p1.x=rect.left;p1.y=rect.bottom;
????????????? p2.x=rect.right;p2.y=rect.bottom;
?
????????????? p3.x=rect.right;p3.y=rect.top;
????????????? p4.x=rect.left;p4.y=rect.top;
????????????? p=rect.CenterPoint();
????????????? _DrawTriangle (pDC,p1,p2,p,nShadowEndColor,nShadowEndColor,nShadowBeginColor);
????????????? DrawTriangle(pDC,p2,p3,p,nShadowEndColor,nShadowEndColor,nShadowBeginColor);
????????????? DrawTriangle(pDC,p3,p4,p,nShadowEndColor,nShadowEndColor,nShadowBeginColor);
????????????? DrawTriangle(pDC,p4,p1,p,nShadowEndColor,nShadowEndColor,nShadowBeginColor);
?????? }
??????
}
?
總結(jié)
以上是生活随笔為你收集整理的绘制颜色渐变矩形函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java单位数_java – 优化代码
- 下一篇: 使用GDI+实现圆形进度条控件的平滑效果