GDI+开发教程 学习记录四 画刷

画刷

SolidBrush

SolidBrush 类定义纯色 Brush 对象

	SolidBrush(IN const Color& color)
    Status GetColor(OUT Color* color) const;
    Status SetColor(IN const Color& color);

HatchBrush

HatchBrush 类定义具有阴影样式、前景色和背景色的矩形画笔,
前景色定义阴影线的颜色;背景色定义绘制阴影线的颜色

    HatchBrush(IN HatchStyle hatchStyle, 
               IN const Color& foreColor,
               IN const Color& backColor = Color());
    // 获取此阴影画笔的阴影样式
    HatchStyle GetHatchStyle() const;
    // 获取此阴影画笔的前景色
    Status GetForegroundColor(OUT Color* color) const;
    // 获取此阴影画笔的背景色
    Status GetBackgroundColor(OUT Color *color) const;

展示下具体阴影样式HatchStyle 枚举类型:

typedef enum HatchStyle {
  HatchStyleHorizontal, 
  HatchStyleVertical,
  HatchStyleForwardDiagonal,
  HatchStyleBackwardDiagonal,
  HatchStyleCross,
  HatchStyleDiagonalCross,
  HatchStyle05Percent,
  HatchStyle10Percent,
  HatchStyle20Percent,
  HatchStyle25Percent,
  HatchStyle30Percent,
  HatchStyle40Percent,
  HatchStyle50Percent,
  HatchStyle60Percent,
  HatchStyle70Percent,
  HatchStyle75Percent,
  HatchStyle80Percent,
  HatchStyle90Percent,
  HatchStyleLightDownwardDiagonal,
  HatchStyleLightUpwardDiagonal,
  HatchStyleDarkDownwardDiagonal,
  HatchStyleDarkUpwardDiagonal,
  HatchStyleWideDownwardDiagonal,
  HatchStyleWideUpwardDiagonal,
  HatchStyleLightVertical,
  HatchStyleLightHorizontal,
  HatchStyleNarrowVertical,
  HatchStyleNarrowHorizontal,
  HatchStyleDarkVertical,
  HatchStyleDarkHorizontal,
  HatchStyleDashedDownwardDiagonal,
  HatchStyleDashedUpwardDiagonal,
  HatchStyleDashedHorizontal,
  HatchStyleDashedVertical,
  HatchStyleSmallConfetti,
  HatchStyleLargeConfetti,
  HatchStyleZigZag,
  HatchStyleWave,
  HatchStyleDiagonalBrick,
  HatchStyleHorizontalBrick,
  HatchStyleWeave,
  HatchStylePlaid,
  HatchStyleDivot,
  HatchStyleDottedGrid,
  HatchStyleDottedDiamond,
  HatchStyleShingle,
  HatchStyleTrellis,
  HatchStyleSphere,
  HatchStyleSmallGrid,
  HatchStyleSmallCheckerBoard,
  HatchStyleLargeCheckerBoard,
  HatchStyleOutlinedDiamond,
  HatchStyleSolidDiamond,
  HatchStyleTotal,
  HatchStyleLargeGrid,
  HatchStyleMin,
  HatchStyleMax
} ;

直线渐变画刷 LinearGradientBrush

直线渐变是指在一个矩形区域使用两种颜色进行过渡(渐变),过渡方向可以是水平、垂直以及对角线方向

LinearGradientBrush(Point &point1, Point &point2, Color &color1, Color &color2); 
LinearGradientBrush(Rect &rect, Color &color1, Color &color2, REAL angle, BOOL isAngleScalable); 
LinearGradientBrush(Rect &rect, Color &color1, Color &color2, LinearGradientMode mode);
参数:  point1和point2分别用来指定矩形区域的左上角和右下角点坐标 
	   rect 为指定渐变起点和终点的矩形
	   color1 起始边界线上的颜色
	   color2 结束边界线处的颜色
	   LinearGradientMode 枚举的元素,指定渐变的方向
	   angle 用来指定渐变的方向角度,正值为顺时针
LinearGradientBrush linGrBrush( 
Point(10, 10), 
Point(150, 150), 
Color(255, 196, 0, 0), 
Color(255, 0, 0, 95)); 
graphics.FillRectangle(&linGrBrush, 300, 50, 140, 140);

路径渐变画刷 PathGradientBrush

路径渐变画刷是用渐变颜色来填充一个封闭的路径;一个路径既可以由一系列的直线和曲线构成,也可以由其它对象来构造。路径渐变画笔具有边界路径、边界颜色、中心点和中心颜色。 使用路径渐变画笔绘制区域时,当从边界路径移动到中心点时,颜色会逐渐从边界颜色更改为中心颜色。

PathGradientBrush(const GraphicsPath* path); 
PathGradientBrush(const Point * points, INT count, WrapMode wrapMode);
参数:  path 指定一个路径指针
		points 和 count 指定组成路径的一系列直线端点的数组及其大小
		wrapMode 指定填充的包围模式。一个包围模式用来决定是否在区域内部、在区域外部以及所有区域都填充。
		默认时,其值为WrapModeClamp,即在区域内部填充。

GraphicsPath对象存储一系列直线、曲线和形状,通过 DrawPath方法来绘制整个序列
将直线、曲线和形状序列划分为图形,并在 GraphicsPathIterator对象的帮助下绘制选定的图形
可以在序列中放置标记,以便可以绘制路径的选定部分。

GraphicsPathIterator类提供用于隔离GraphicsPath对象中存储的路径的选定子集的方法。
路径由一个或多个图形组成。您可以使用GraphicsPathIterator来隔离一个或多个图形。

渐变画刷的使用方法:

GraphicsPath path; 
path.AddEllipse(50, 50, 200, 100); 
PathGradientBrush pthGrBrush(&path); 
pthGrBrush.SetCenterColor(Color(255, 0, 0, 255)); 
Color colors[] = {Color(0, 0, 0, 255)}; 
INT count = 1; 
pthGrBrush.SetSurroundColors(colors, &count); 
graphics.FillRectangle(&pthGrBrush, 50, 50, 200, 100);

图像填充画刷 TextureBrush

TextureBrush 类定义一个 Brush 对象,该对象包含用于填充的图像对象。 可以使用 Brush 对象中包含的本地 Matrix 对象来转换填充图像

TextureBrush构造 基于图像、定义矩形和一组图像属性创建 TextureBrush对象
GetImage 方法获取指向此纹理画笔定义的 Image 对象的指针
GetTransform 方法获取此纹理画笔的转换矩阵
GetWrapMode 方法获取当前为此纹理画笔设置的换行模式
MultiplyTransform 方法使用自身和另一个矩阵的乘积更新此画笔的转换矩阵
ResetTransform 方法将此纹理画笔的转换矩阵重置为标识矩阵。 这意味着不会发生任何转换
RotateTransform 方法使用自身和旋转矩阵的乘积更新此纹理画笔的当前转换矩阵
ScaleTransform 方法使用自身和缩放矩阵的乘积更新此纹理画笔的当前转换矩阵
SetTransform 方法设置此纹理画笔的转换矩阵
SetWrapMode 方法设置此纹理画笔的环绕模式
Image image(L"image.jpg"); 
TextureBrush tBrush(&image); 
Pen texturedPen(&tBrush, 10); 
graphics.DrawLine(&texturedPen, 25, 25, 325, 25); 
tBrush.SetWrapMode(WrapModeTileFlipXY); 
graphics.FillRectangle(&tBrush, 25, 100, 300, 200);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值