请教,怎样在矩形区域填充渐变色,就像窗口标题栏

yayafu 2005-08-18 10:46:14
请教,怎样在矩形区域填充渐变色,就像窗口标题栏那样由深到浅,应该有个API函数吧
...全文
457 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
summer0360 2005-08-20
  • 打赏
  • 举报
回复
mark
请问GradientFill具体怎么调用?
给个2,3句话的例子?
laogong165 2005-08-19
  • 打赏
  • 举报
回复
嘎嘎
kingsundy 2005-08-19
  • 打赏
  • 举报
回复
GradientFill
pomelowu 2005-08-18
  • 打赏
  • 举报
回复
GradientFill
i_noname 2005-08-18
  • 打赏
  • 举报
回复
把矩形分成N个小矩形,用渐变色对各个小矩形逐个填充。
void CProcessCtrl::DrawGradient(HDC pDC,const RECT& rectClient,const int & nMaxWidth) {
RECT rectFill; //显示区域
float fStep; //每一步的幅宽
HBRUSH hBrush; //显示的颜色画刷

int nRed = 0, nGreen=0, nBlue = 0;
float fRefStep = 0.0, fGreenStep=0.0, fBlueStep=0.0;

//得到不同颜色并相减,返回颜色之间的最大差值
nRed = (GetRValue(m_nShadowEndColor)-GetRValue(m_nShadowBeginColor));
nGreen = (GetGValue(m_nShadowEndColor)-GetGValue(m_nShadowBeginColor));
nBlue = (GetBValue(m_nShadowEndColor)-GetBValue(m_nShadowBeginColor));

//使进程条显示的总数 等于最大的颜色差值
int nSteps=max(abs(nRed),max(abs(nGreen),abs(nBlue)));

//确定每一颜色填充多大的矩形区域
//以下两种计算步长方式均成立,视个人喜好而定
//fStep = (float)rectClient.right / (float)nSteps;
fStep = (float)nMaxWidth / (float)nSteps;
//设置每一颜色填充的步数
fRefStep = nRed / (float)nSteps;
fGreenStep = nGreen / (float)nSteps;
fBlueStep = nBlue / (float)nSteps;

nRed = GetRValue(m_nShadowBeginColor);
nGreen = GetGValue(m_nShadowBeginColor);
nBlue = GetBValue(m_nShadowBeginColor);
//绘制颜色渐变的进程条
for(int nOnBand=0 ; nOnBand < nSteps ; nOnBand++)
{
//本质为使用一个一个的小RECT填充客户区,而每次填充使用不同的颜色(BRUSH),从而达到渐变的效果
::SetRect(&rectFill,
//填充矩形区域的左上角x,y和右下角x,y
(int)(nOnBand*fStep),
0,
(int)((nOnBand+1)*fStep),
rectClient.bottom+1);

hBrush = CreateSolidBrush(RGB(nRed + fRefStep*nOnBand,
nGreen + fGreenStep*nOnBand,
nBlue + fBlueStep*nOnBand));
HBRUSH oldBrush = (HBRUSH)::SelectObject(pDC, hBrush);
FillRect(pDC , &rectFill, hBrush);
::SelectObject(pDC, oldBrush);
DeleteObject(hBrush);
}
}
yll1986 2005-08-18
  • 打赏
  • 举报
回复
自己做一个渐变的位图,然后把它导入?哈哈!说笑

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧