用mfc写出渐变填充函数
时间: 2023-12-17 09:04:00 浏览: 35
以下是一个简单的 MFC 渐变填充函数的示例:
```cpp
void CGradientFill::GradientFill(CDC* pDC, CRect rect, COLORREF colorStart, COLORREF colorEnd, BOOL bHorizontal)
{
// 计算渐变范围
int nWidth = rect.Width();
int nHeight = rect.Height();
// 创建渐变画刷
CBrush brush;
brush.CreateSolidBrush(colorStart);
// 画刷逐渐淡化到 colorEnd
COLORREF color = colorStart;
int rStep = ((colorEnd & 0xFF0000) - (colorStart & 0xFF0000)) / nWidth;
int gStep = ((colorEnd & 0x00FF00) - (colorStart & 0x00FF00)) / nWidth;
int bStep = ((colorEnd & 0x0000FF) - (colorStart & 0x0000FF)) / nWidth;
// 水平渐变
if (bHorizontal)
{
for (int i = 0; i < nWidth; i++)
{
color = RGB(GetRValue(color) + rStep, GetGValue(color) + gStep, GetBValue(color) + bStep);
brush.CreateSolidBrush(color);
pDC->FillRect(CRect(rect.left + i, rect.top, rect.left + i + 1, rect.bottom), &brush);
}
}
// 垂直渐变
else
{
for (int i = 0; i < nHeight; i++)
{
color = RGB(GetRValue(color) + rStep, GetGValue(color) + gStep, GetBValue(color) + bStep);
brush.CreateSolidBrush(color);
pDC->FillRect(CRect(rect.left, rect.top + i, rect.right, rect.top + i + 1), &brush);
}
}
}
```
这个函数接受一个 CDC 对象、矩形区域、起始颜色、结束颜色和一个布尔值,用于指定渐变是水平还是垂直的。函数通过计算每个像素的颜色值来渐变填充矩形区域。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)