实现绘画渐变框的方法

DrawGradientRect(CDC* pDC, CRect& rcGradient, COLORREF clrBegin, COLORREF clrEnd)

COLORREF clrCptn = clrBegin;
 HBRUSH brCptn = ::GetSysColorBrush(clrBegin);
 
 int nShift = 6;
 int nSteps = 1 << nShift;
 
 for (int i = 0; i < nSteps; i++)
 {
  BYTE bR = (BYTE) ((GetRValue(clrCptn) * (nSteps - i) + GetRValue(clrEnd) * i) >> nShift);

  BYTE bG = (BYTE) ((GetGValue(clrCptn) * (nSteps - i) + GetGValue(clrEnd) * i) >> nShift);

  BYTE bB = (BYTE) ((GetBValue(clrCptn) * (nSteps - i) + GetBValue(clrEnd) * i) >> nShift);
  
  CBrush br (RGB(bR, bG, bB));
  
  CRect r2 = rcGradient;

  r2.left = rcGradient.left + ((i * rcGradient.Width()) >> nShift);
  r2.right = rcGradient.left + (((i + 1) * rcGradient.Width()) >> nShift);
  if (r2.Width() > 0)
   pDC->FillRect(r2, &br);
 }  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值