更新时间:2016-03-03 20:24:08浏览次数:1+次
影线画刷是使用同样重复的小图案来填充一个区域的。该图案由前景色与背景色组成。对于使用黑白两种颜色的影线画刷而言,前景色是黑色,背景色是透明的白色。单个的画刷构成的元素在视觉上不能产生任何的效果,只有在这些图案一次被排列组合之后,才能形成完整的画刷。首先来看看影线画刷的定义:
HatchBrush{
HatchStyle hatchStyle,
const Color &foreColor,
const Color &backColor
};
在这里,枚举下hatchStyle:
enum HatchStyle
{
HatchStyleHorizontal, // 0
HatchStyleVertical, // 1
HatchStyleForwardDiagonal, // 2
HatchStyleBackwardDiagonal, // 3
HatchStyleCross, // 4
HatchStyleDiagonalCross, // 5
HatchStyle05Percent, // 6
HatchStyle10Percent, // 7
HatchStyle20Percent, // 8
HatchStyle25Percent, // 9
HatchStyle30Percent, // 10
HatchStyle40Percent, // 11
HatchStyle50Percent, // 12
HatchStyle60Percent, // 13
HatchStyle70Percent, // 14
HatchStyle75Percent, // 15
HatchStyle80Percent, // 16
HatchStyle90Percent, // 17
HatchStyleLightDownwardDiagonal, // 18
HatchStyleLightUpwardDiagonal, // 19
HatchStyleDarkDownwardDiagonal, // 20
HatchStyleDarkUpwardDiagonal, // 21
HatchStyleWideDownwardDiagonal, // 22
HatchStyleWideUpwardDiagonal, // 23
HatchStyleLightVertical, // 24
HatchStyleLightHorizontal, // 25
HatchStyleNarrowVertical, // 26
HatchStyleNarrowHorizontal, // 27
HatchStyleDarkVertical, // 28
HatchStyleDarkHorizontal, // 29
HatchStyleDashedDownwardDiagonal, // 30
HatchStyleDashedUpwardDiagonal, // 31
HatchStyleDashedHorizontal, // 32
HatchStyleDashedVertical, // 33
HatchStyleSmallConfetti, // 34
HatchStyleLargeConfetti, // 35
HatchStyleZigZag, // 36
HatchStyleWave, // 37
HatchStyleDiagonalBrick, // 38
HatchStyleHorizontalBrick, // 39
HatchStyleWeave, // 40
HatchStylePlaid, // 41
HatchStyleDivot, // 42
HatchStyleDottedGrid, // 43
HatchStyleDottedDiamond, // 44
HatchStyleShingle, // 45
HatchStyleTrellis, // 46
HatchStyleSphere, // 47
HatchStyleSmallGrid, // 48
HatchStyleSmallCheckerBoard, // 49
HatchStyleLargeCheckerBoard, // 50
HatchStyleOutlinedDiamond, // 51
HatchStyleSolidDiamond, // 52
HatchStyleTotal,
HatchStyleLargeGrid = HatchStyleCross, // 4
HatchStyleMin = HatchStyleHorizontal,
HatchStyleMax = HatchStyleTotal - 1,
};
这些,我们能够在VS编译器里面找到,在这里推荐使用VA_X插件,这个插件能够帮助你在VS编译器里找到某个函数的定义及实现代码。作为一个VC++开发人员并使用VS开发的话,这个插件对比来说,可谓如虎添翼。Status SetRenderingOrigin(IN INT x, IN INT y)
{
return SetStatus(
DllExports::GdipSetRenderingOrigin(
nativeGraphics, x, y
)
);
}
这是这个函数的实现代码,我想我就不用说这个函数的定义了吧。void CGDI学习View::On32772()//影线画刷
{
// TODO: 在此添加命令处理程序代码
Graphics graphics(this->m_hWnd);
Color black(255,0,0,0);
Color white(255,255,255,255);
HatchBrush hatchbrush(HatchStyle(20),black,white);
for(int i=0; i<8; i++)
{
graphics.FillRectangle(&hatchbrush,0,i*50,100,50);
}
for(int i=0; i<8; i++)
{
graphics.SetRenderingOrigin(i,0);
graphics.FillRectangle(&hatchbrush,100,i*50,100,50);
}
}
代码实现:
相关资讯