C#GDI+阴影笔刷样式HatchStyle探讨
命名空间:System.Drawing.Drawing2D.HatchBrush
在创建笔刷时,需要传入参数
1.阴影样式HatchStyle
2.前景色
3.背景色
Brush brs1 = new HatchBrush(参数1,参数2, 参数3);
参数1中HatchStyle为枚举值,且枚举很多有0-52,突发奇想,想试试每种笔刷的效果,结果如下,可供参考:

测试代码,使用循环生成枚举笔刷绘制:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string code = GetAllBrushCode();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Point start = new Point(50, 50);
Point end = new Point(300, 50);
//前景色
Color color1 = Color.Blue;
//背景色
Color color2 = Color.Yellow;
//每根线之间的间距
int margin = 10;
//每个笔刷的宽度
int pwidth = 10;
//笔刷
//1.颜色笔刷
Brush br1 = new SolidBrush(Color.Black);
Pen p1 = new Pen(br1, pwidth);
g.DrawLine(p1, NewPoint(start, 0), NewPoint(end, 0));
//2.阴影画刷
//复制code生成的代码开始
//样式1
Brush brs1 = new HatchBrush((HatchStyle)0, color1, color2);
Pen ps1 = new Pen(brs1, pwidth);
g.DrawLine(ps1, NewPoint(start, 22), NewPoint(end, 22));
g.DrawString("HatchStyle.Horizontal", new Font("微软雅黑", 8), br1, NewPoint(end, 23));
//样式2
Brush brs2 = new HatchBrush((HatchStyle)1, color1, color2);
Pen ps2 = new Pen(brs2, pwidth);
g.DrawLine(ps2, NewPoint(start, 44), NewPoint(end, 44));
g.DrawString("HatchStyle.Vertical", new Font("微软雅黑", 8), br1, NewPoint(end, 46));
//样式3
Brush brs3 = new HatchBrush((HatchStyle)2, color1, color2);
Pen ps3 = new Pen(brs3, pwidth);
g.DrawLine(ps3, NewPoint(start, 66), NewPoint(end, 66));
g.DrawString("HatchStyle.ForwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 69));
//样式4
Brush brs4 = new HatchBrush((HatchStyle)3, color1, color2);
Pen ps4 = new Pen(brs4, pwidth);
g.DrawLine(ps4, NewPoint(start, 88), NewPoint(end, 88));
g.DrawString("HatchStyle.BackwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 92));
//样式5
Brush brs5 = new HatchBrush((HatchStyle)4, color1, color2);
Pen ps5 = new Pen(brs5, pwidth);
g.DrawLine(ps5, NewPoint(start, 110), NewPoint(end, 110));
g.DrawString("HatchStyle.LargeGrid", new Font("微软雅黑", 8), br1, NewPoint(end, 115));
//样式6
Brush brs6 = new HatchBrush((HatchStyle)5, color1, color2);
Pen ps6 = new Pen(brs6, pwidth);
g.DrawLine(ps6, NewPoint(start, 132), NewPoint(end, 132));
g.DrawString("HatchStyle.DiagonalCross", new Font("微软雅黑", 8), br1, NewPoint(end, 138));
//样式7
Brush brs7 = new HatchBrush((HatchStyle)6, color1, color2);
Pen ps7 = new Pen(brs7, pwidth);
g.DrawLine(ps7, NewPoint(start, 154), NewPoint(end, 154));
g.DrawString("HatchStyle.Percent05", new Font("微软雅黑", 8), br1, NewPoint(end, 161));
//样式8
Brush brs8 = new HatchBrush((HatchStyle)7, color1, color2);
Pen ps8 = new Pen(brs8, pwidth);
g.DrawLine(ps8, NewPoint(start, 176), NewPoint(end, 176));
g.DrawString("HatchStyle.Percent10", new Font("微软雅黑", 8), br1, NewPoint(end, 184));
//样式9
Brush brs9 = new HatchBrush((HatchStyle)8, color1, color2);
Pen ps9 = new Pen(brs9, pwidth);
g.DrawLine(ps9, NewPoint(start, 198), NewPoint(end, 198));
g.DrawString("HatchStyle.Percent20", new Font("微软雅黑", 8), br1, NewPoint(end, 207));
//样式10
Brush brs10 = new HatchBrush((HatchStyle)9, color1, color2);
Pen ps10 = new Pen(brs10, pwidth);
g.DrawLine(ps10, NewPoint(start, 220), NewPoint(end, 220));
g.DrawString("HatchStyle.Percent25", new Font("微软雅黑", 8), br1, NewPoint(end, 230));
//样式11
Brush brs11 = new HatchBrush((HatchStyle)10, color1, color2);
Pen ps11 = new Pen(brs11, pwidth);
g.DrawLine(ps11, NewPoint(start, 242), NewPoint(end, 242));
g.DrawString("HatchStyle.Percent30", new Font("微软雅黑", 8), br1, NewPoint(end, 253));
//样式12
Brush brs12 = new HatchBrush((HatchStyle)11, color1, color2);
Pen ps12 = new Pen(brs12, pwidth);
g.DrawLine(ps12, NewPoint(start, 264), NewPoint(end, 264));
g.DrawString("HatchStyle.Percent40", new Font("微软雅黑", 8), br1, NewPoint(end, 276));
//样式13
Brush brs13 = new HatchBrush((HatchStyle)12, color1, color2);
Pen ps13 = new Pen(brs13, pwidth);
g.DrawLine(ps13, NewPoint(start, 286), NewPoint(end, 286));
g.DrawString("HatchStyle.Percent50", new Font("微软雅黑", 8), br1, NewPoint(end, 299));
//样式14
Brush brs14 = new HatchBrush((HatchStyle)13, color1, color2);
Pen ps14 = new Pen(brs14, pwidth);
g.DrawLine(ps14, NewPoint(start, 308), NewPoint(end, 308));
g.DrawString("HatchStyle.Percent60", new Font("微软雅黑", 8), br1, NewPoint(end, 322));
//样式15
Brush brs15 = new HatchBrush((HatchStyle)14, color1, color2);
Pen ps15 = new Pen(brs15, pwidth);
g.DrawLine(ps15, NewPoint(start, 330), NewPoint(end, 330));
g.DrawString("HatchStyle.Percent70", new Font("微软雅黑", 8), br1, NewPoint(end, 345));
//样式16
Brush brs16 = new HatchBrush((HatchStyle)15, color1, color2);
Pen ps16 = new Pen(brs16, pwidth);
g.DrawLine(ps16, NewPoint(start, 352), NewPoint(end, 352));
g.DrawString("HatchStyle.Percent75", new Font("微软雅黑", 8), br1, NewPoint(end, 368));
//样式17
Brush brs17 = new HatchBrush((HatchStyle)16, color1, color2);
Pen ps17 = new Pen(brs17, pwidth);
g.DrawLine(ps17, NewPoint(start, 374), NewPoint(end, 374));
g.DrawString("HatchStyle.Percent80", new Font("微软雅黑", 8), br1, NewPoint(end, 391));
//样式18
Brush brs18 = new HatchBrush((HatchStyle)17, color1, color2);
Pen ps18 = new Pen(brs18, pwidth);
g.DrawLine(ps18, NewPoint(start, 396), NewPoint(end, 396));
g.DrawString("HatchStyle.Percent90", new Font("微软雅黑", 8), br1, NewPoint(end, 414));
//样式19
Brush brs19 = new HatchBrush((HatchStyle)18, color1, color2);
Pen ps19 = new Pen(brs19, pwidth);
g.DrawLine(ps19, NewPoint(start, 418), NewPoint(end, 418));
g.DrawString("HatchStyle.LightDownwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 437));
//样式20
Brush brs20 = new HatchBrush((HatchStyle)19, color1, color2);
Pen ps20 = new Pen(brs20, pwidth);
g.DrawLine(ps20, NewPoint(start, 440), NewPoint(end, 440));
g.DrawString("HatchStyle.LightUpwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 460));
//样式21
Brush brs21 = new HatchBrush((HatchStyle)20, color1, color2);
Pen ps21 = new Pen(brs21, pwidth);
g.DrawLine(ps21, NewPoint(start, 462), NewPoint(end, 462));
g.DrawString("HatchStyle.DarkDownwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 483));
//样式22
Brush brs22 = new HatchBrush((HatchStyle)21, color1, color2);
Pen ps22 = new Pen(brs22, pwidth);
g.DrawLine(ps22, NewPoint(start, 484), NewPoint(end, 484));
g.DrawString("HatchStyle.DarkUpwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 506));
//样式23
Brush brs23 = new HatchBrush((HatchStyle)22, color1, color2);
Pen ps23 = new Pen(brs23, pwidth);
g.DrawLine(ps23, NewPoint(start, 506), NewPoint(end, 506));
g.DrawString("HatchStyle.WideDownwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 529));
//样式24
Brush brs24 = new HatchBrush((HatchStyle)23, color1, color2);
Pen ps24 = new Pen(brs24, pwidth);
g.DrawLine(ps24, NewPoint(start, 528), NewPoint(end, 528));
g.DrawString("HatchStyle.WideUpwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 552));
//样式25
Brush brs25 = new HatchBrush((HatchStyle)24, color1, color2);
Pen ps25 = new Pen(brs25, pwidth);
g.DrawLine(ps25, NewPoint(start, 550), NewPoint(end, 550));
g.DrawString("HatchStyle.LightVertical", new Font("微软雅黑", 8), br1, NewPoint(end, 575));
//样式26
Brush brs26 = new HatchBrush((HatchStyle)25, color1, color2);
Pen ps26 = new Pen(brs26, pwidth);
g.DrawLine(ps26, NewPoint(start, 572), NewPoint(end, 572));
g.DrawString("HatchStyle.LightHorizontal", new Font("微软雅黑", 8), br1, NewPoint(end, 598));
//样式27
Brush brs27 = new HatchBrush((HatchStyle)26, color1, color2);
Pen ps27 = new Pen(brs27, pwidth);
g.DrawLine(ps27, NewPoint(start, 594), NewPoint(end, 594));
g.DrawString("HatchStyle.NarrowVertical", new Font("微软雅黑", 8), br1, NewPoint(end, 621));
//样式28
Brush brs28 = new HatchBrush((HatchStyle)27, color1, color2);
Pen ps28 = new Pen(brs28, pwidth);
g.DrawLine(ps28, NewPoint(start, 616), NewPoint(end, 616));
g.DrawString("HatchStyle.NarrowHorizontal", new Font("微软雅黑", 8), br1, NewPoint(end, 644));
//样式29
Brush brs29 = new HatchBrush((HatchStyle)28, color1, color2);
Pen ps29 = new Pen(brs29, pwidth);
g.DrawLine(ps29, NewPoint(start, 638), NewPoint(end, 638));
g.DrawString("HatchStyle.DarkVertical", new Font("微软雅黑", 8), br1, NewPoint(end, 667));
//样式30
Brush brs30 = new HatchBrush((HatchStyle)29, color1, color2);
Pen ps30 = new Pen(brs30, pwidth);
g.DrawLine(ps30, NewPoint(start, 660), NewPoint(end, 660));
g.DrawString("HatchStyle.DarkHorizontal", new Font("微软雅黑", 8), br1, NewPoint(end, 690));
//样式31
Brush brs31 = new HatchBrush((HatchStyle)30, color1, color2);
Pen ps31 = new Pen(brs31, pwidth);
g.DrawLine(ps31, NewPoint(start, 682), NewPoint(end, 682));
g.DrawString("HatchStyle.DashedDownwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 713));
//样式32
Brush brs32 = new HatchBrush((HatchStyle)31, color1, color2);
Pen ps32 = new Pen(brs32, pwidth);
g.DrawLine(ps32, NewPoint(start, 704), NewPoint(end, 704));
g.DrawString("HatchStyle.DashedUpwardDiagonal", new Font("微软雅黑", 8), br1, NewPoint(end, 736));
//样式33
Brush brs33 = new HatchBrush((HatchStyle)32, color1, color2);
Pen ps33 = new Pen(brs33, pwidth);
g.DrawLine(ps33, NewPoint(start, 726), NewPoint(end, 726));
g.DrawString("HatchStyle.DashedHorizontal", new Font("微软雅黑", 8), br1, NewPoint(end, 759));
//样式34
Brush brs34 = new HatchBrush((HatchStyle)33, color1, color2);
Pen ps34 = new Pen(brs34, pwidth);
g.DrawLine(ps34, NewPoint(start, 748), NewPoint(end, 748));
g.DrawString("HatchStyle.DashedVertical", new Font("微软雅黑", 8), br1, NewPoint(end, 782));
//样式35
Brush brs35 = new HatchBrush((HatchStyle)34, color1, color2);
Pen ps35 = new Pen(brs35, pwidth);
g.DrawLine(ps35, NewPoint(start, 770), NewPoint(end, 770));
g.DrawString("HatchStyle.SmallConfetti", new Font("微软雅黑", 8), br1, NewPoint(end, 805));
//样式36
Brush brs36 = new HatchBrush((HatchStyle)35, color1, color2);
Pen ps36 = new Pen(brs36, pwidth);
g.DrawLine(ps36, NewPoint(start, 792), NewPoint(end, 792));
g.DrawString("HatchStyle.LargeConfetti", new Font("微软雅黑", 8), br1, NewPoint(end, 828));
//样式37
Brush brs37 = new HatchBrush((HatchStyle)36, color1, color2);
Pen ps37 = new Pen(brs37, pwidth);
g.DrawLine(ps37, NewPoint(start, 814), NewPoint(end, 814));
g.DrawString("HatchStyle.ZigZag", new Font("微软雅黑", 8), br1, NewPoint(end, 851));
//样式38
Brush brs38 = new HatchBrush((HatchStyle)37, color1, color2);
Pen ps38 = new Pen(brs38, pwidth);
g.DrawLine(ps38, NewPoint(start, 836), NewPoint(end, 836));
g.DrawString("HatchStyle.Wave", new Font("微软雅黑", 8), br1, NewPoint(end, 874));
//样式39
Brush brs39 = new HatchBrush((HatchStyle)38, color1, color2);
Pen ps39 = new Pen(brs39, pwidth);
g.DrawLine(ps39, NewPoint(start, 858), NewPoint(end, 858));
g.DrawString("HatchStyle.DiagonalBrick", new Font("微软雅黑", 8), br1, NewPoint(end, 897));
//样式40
Brush brs40 = new HatchBrush((HatchStyle)39, color1, color2);
Pen ps40 = new Pen(brs40, pwidth);
g.DrawLine(ps40, NewPoint(start, 880), NewPoint(end, 880));
g.DrawString("HatchStyle.HorizontalBrick", new Font("微软雅黑", 8), br1, NewPoint(end, 920));
//样式41
Brush brs41 = new HatchBrush((HatchStyle)40, color1, color2);
Pen ps41 = new Pen(brs41, pwidth);
g.DrawLine(ps41, NewPoint(start, 902), NewPoint(end, 902));
g.DrawString("HatchStyle.Weave", new Font("微软雅黑", 8), br1, NewPoint(end, 943));
//样式42
Brush brs42 = new HatchBrush((HatchStyle)41, color1, color2);
Pen ps42 = new Pen(brs42, pwidth);
g.DrawLine(ps42, NewPoint(start, 924), NewPoint(end, 924));
g.DrawString("HatchStyle.Plaid", new Font("微软雅黑", 8), br1, NewPoint(end, 966));
//样式43
Brush brs43 = new HatchBrush((HatchStyle)42, color1, color2);
Pen ps43 = new Pen(brs43, pwidth);
g.DrawLine(ps43, NewPoint(start, 946), NewPoint(end, 946));
g.DrawString("HatchStyle.Divot", new Font("微软雅黑", 8), br1, NewPoint(end, 989));
//样式44
Brush brs44 = new HatchBrush((HatchStyle)43, color1, color2);
Pen ps44 = new Pen(brs44, pwidth);
g.DrawLine(ps44, NewPoint(start, 968), NewPoint(end, 968));
g.DrawString("HatchStyle.DottedGrid", new Font("微软雅黑", 8), br1, NewPoint(end, 1012));
//样式45
Brush brs45 = new HatchBrush((HatchStyle)44, color1, color2);
Pen ps45 = new Pen(brs45, pwidth);
g.DrawLine(ps45, NewPoint(start, 990), NewPoint(end, 990));
g.DrawString("HatchStyle.DottedDiamond", new Font("微软雅黑", 8), br1, NewPoint(end, 1035));
//样式46
Brush brs46 = new HatchBrush((HatchStyle)45, color1, color2);
Pen ps46 = new Pen(brs46, pwidth);
g.DrawLine(ps46, NewPoint(start, 1012), NewPoint(end, 1012));
g.DrawString("HatchStyle.Shingle", new Font("微软雅黑", 8), br1, NewPoint(end, 1058));
//样式47
Brush brs47 = new HatchBrush((HatchStyle)46, color1, color2);
Pen ps47 = new Pen(brs47, pwidth);
g.DrawLine(ps47, NewPoint(start, 1034), NewPoint(end, 1034));
g.DrawString("HatchStyle.Trellis", new Font("微软雅黑", 8), br1, NewPoint(end, 1081));
//样式48
Brush brs48 = new HatchBrush((HatchStyle)47, color1, color2);
Pen ps48 = new Pen(brs48, pwidth);
g.DrawLine(ps48, NewPoint(start, 1056), NewPoint(end, 1056));
g.DrawString("HatchStyle.Sphere", new Font("微软雅黑", 8), br1, NewPoint(end, 1104));
//样式49
Brush brs49 = new HatchBrush((HatchStyle)48, color1, color2);
Pen ps49 = new Pen(brs49, pwidth);
g.DrawLine(ps49, NewPoint(start, 1078), NewPoint(end, 1078));
g.DrawString("HatchStyle.SmallGrid", new Font("微软雅黑", 8), br1, NewPoint(end, 1127));
//样式50
Brush brs50 = new HatchBrush((HatchStyle)49, color1, color2);
Pen ps50 = new Pen(brs50, pwidth);
g.DrawLine(ps50, NewPoint(start, 1100), NewPoint(end, 1100));
g.DrawString("HatchStyle.SmallCheckerBoard", new Font("微软雅黑", 8), br1, NewPoint(end, 1150));
//样式51
Brush brs51 = new HatchBrush((HatchStyle)50, color1, color2);
Pen ps51 = new Pen(brs51, pwidth);
g.DrawLine(ps51, NewPoint(start, 1122), NewPoint(end, 1122));
g.DrawString("HatchStyle.LargeCheckerBoard", new Font("微软雅黑", 8), br1, NewPoint(end, 1173));
//样式52
Brush brs52 = new HatchBrush((HatchStyle)51, color1, color2);
Pen ps52 = new Pen(brs52, pwidth);
g.DrawLine(ps52, NewPoint(start, 1144), NewPoint(end, 1144));
g.DrawString("HatchStyle.OutlinedDiamond", new Font("微软雅黑", 8), br1, NewPoint(end, 1196));
//复制code生成的代码结束
}
/// <summary>
/// 将传入的点往y轴方向下移一定的距离
/// </summary>
/// <param name="offset"></param>
private Point NewPoint(Point p, int offset)
{
p.Y += offset;
return p;
}
private string GetAllBrushCode()
{
string a = "";
for (int i = 1; i <= 52; i++)
{
a += "//样式" + i.ToString() + "\r\n";
a += "Brush brs" + i.ToString() + " = new HatchBrush((HatchStyle)" + (i - 1).ToString() + ", color1, color2);\r\n";
a += "Pen ps" + i.ToString() + " = new Pen(brs" + i.ToString() + ", pwidth);\r\n";
a += "g.DrawLine(ps" + i.ToString() + ", NewPoint(start, " + (i * 22).ToString() + "), NewPoint(end, " + (i * 22).ToString() + "));\r\n";
a += "g.DrawString(\"HatchStyle." + getBrushName(i - 1) + "\", new Font(\"微软雅黑\", 8), br1, NewPoint(end, " + (i * 23).ToString() + "));\r\n";
}
return a;
}
private string getBrushName(int index)
{
HatchStyle temp = (HatchStyle)index;
return temp.ToString();
}
}

浙公网安备 33010602011771号