更新时间:2015-11-27 23:25:15浏览次数:1+次
想比较双色渐变,多色渐变画刷就是多了一种色彩作为过渡。实现多色渐变的填充效果时,可以使用一种较为原始的方法来构造一个多色填充效果,不过这种方式比较麻烦,不容易做。GDI+封装了一个函数SetInterpolationColors。
Status SetInterpolationColors(
const Color* pressColors;
const REAL* blendPositions;
INT count;
)
pressColors:包含多种颜色的数组;打开VS2013,新建一个工程,同时在工程中引入代码,因为我们实现的是GDI+工程。需要加入的代码,如《线性渐变画刷的学习之双色渐变色彩的设置》里的代码一样。下面我们在《线性渐变画刷的学习之双色渐变色彩的设置》菜单项中线性渐变的子菜单项加一项子菜单项多色渐变。建立消息响应:
void CLinearGradientBrushView::OnMultibrushlineardemo()
{
// TODO: 在此添加命令处理程序代码
this->RedrawWindow();
Graphics Multigraphics(this->m_hWnd);
Color colors[] = {
Color(255, 255, 0, 0),
Color(255, 0, 255, 0),
Color(255, 0, 0, 255)
};
REAL positions[] = {
0.0f,
0.3f,
1.0f
};
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(180, 0),
Color(255, 0, 0, 0),
Color(255, 255, 255, 255)
);
linGrBrush.SetInterpolationColors(colors, positions, 3);
Multigraphics.FillRectangle(&linGrBrush, 0, 0, 180, 100);
//////////////////不用SetInterpolation函数实现多色渐变/////////////////
LinearGradientBrush linGrBrush1(
Point(0, 0),
Point(60, 0),
Color(255, 255, 0, 0),
Color(255, 0, 255, 0)
);
Multigraphics.FillRectangle(&linGrBrush1, 0, 120, 160, 100);
LinearGradientBrush linGrBrush2(
Point(0, 0),
Point(60, 0),
Color(255, 0, 255, 0),
Color(255, 0, 0, 255)
);
Multigraphics.FillRectangle(&linGrBrush2, 60, 120, 120, 100);
}
代码实现:
对于相关的GDI+知识,请在本网站搜作者145742784的文章,我写了很多关于GDI+的文章.
相关资讯