更新时间:2015-11-27 23:12:55浏览次数:1+次
线性渐变画刷的作用是在对目标区域进行填充时,使用逐渐变化的色彩进行填充。线性渐变画刷的“渐变”体现为,色彩变化沿着指定角度的直线路径方向进行,线性渐变可以是双色渐变,也可以是多色渐变。
GDI+的LinearGradientBrush类定义了线性渐变画刷。其定义线性渐变画刷的方法有以下六种:
LinearGradientBrush(Point &point1,Point &point2,Color &color1,Color &color2);
LinearGradientBrush(PointF &point1,PointF &points,Color &color1,Color &color2);
LinearGradientBrush(Rect &rect,Color &color1,Color &color2,REAL angle,BOOL isAngleScalable);
LineargradientBrush(RectF &rect,Color &color1,Color &color2,REAL angle,BOOL isAngleScalable);
LinearGradientBrush(Rect &rect,Color &color1, Color &color2,LinearGradientBrushMode mode);
LinearGradientBrush(RectF &rect,Color &color1, Color &color2,LinearGradientBrushMode mode);
&color2,LinearGradientBrushMode mode);打开VS2013,创建一个单文档工程,这是一个GDI+程序,如果你的编译器是VC6.0的话,就需要引入GDI+包,可以和我联系,我这有。微软自VS08后,编译器自带GDI+开发包。
下面我们需要为GDI+程序做些准备手续:
在工程的stdafx.h头文件中,加入以下代码:
#include"gdiplus.h"
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib") //在工程属性中添加亦可
在工程的APP类的初始化函数中加入代码,同时在初始化函数外声明一个变量:
ULONG_PTR gdiplusToken;
上面是变量。下面就是代码:
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
在菜单中新建一个菜单项线性渐变,再在线性渐变下加入一个新子菜单项双色渐变。
为这个新子菜单项建立消息响应:
void CLinearGradientBrushView::OnBrushlineardemo1()
{
// TODO: 在此添加命令处理程序代码
this->RedrawWindow();
Graphics graphics(this->m_hWnd);
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(40, 0),
Color(255, 255, 0, 0),
Color(255, 0, 0, 255));
LinearGradientBrush linGrBrush2(
Point(0, 0),
Point(40, 40),
Color(255, 255, 0, 0),
Color(255, 0, 0, 255)
);
graphics.FillRectangle(&linGrBrush, 0, 0, 200, 200);
graphics.FillRectangle(&linGrBrush2, 240, 0, 200, 200);
Pen pen(Color::Gray, 1);
for (int i = 0; i < 5; i++)
{
graphics.DrawRectangle(&pen, 240 + i * 40, i * 40, 40, 40);
}
}
代码实现:
相关资讯