本文尝试从一个简单的例子入手,来讲述GDI API GradientFill()的妙用。
问题:
这个问题如果是在PC上讨论,那么几乎没什么价值。因为PC的内存较大,CPU的速度也较快,所以可以采用任何你想要的方式绘制。比如说下面就是一种很常见的思路:
1.得到菜单矩形区域和上下文设备。
2。根据矩形区域的大小,起始色和最终色计算每一像素的颜色,从而创建响应的画笔在该矩形的顶端和低端画一条线。
下面是源代码:
void CCustomMenu::DrawBk(CDC *pDC, CRect rect, COLORREF cr1,COLORREF cr2)
{
int r1 = GetRValue(cr1);//Red color1
int g1 = GetGValue(cr1);//Green color1
int b1 = GetBValue(cr1);//blue color1
int r2 = GetRValue(cr2);//red color2
int g2 = GetGValue(cr2);//green color2
int b2 = GetBValue(cr2);//blue color2
float dr = ((float)(r2 - r1))/(float)(rect.Width());
float dg = ((float)(