二、画刷的使用
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public Form1()
{
InitializeComponent();
comboBox1.SelectedIndex = 0;
}
private void button1_Click(object sender, EventArgs e)
{
Bitmap bp = new Bitmap("1.jpg");
TextureBrush tb = new TextureBrush(bp);
Graphics g = this.CreateGraphics();
g.FillRectangle(tb, this.ClientRectangle);
bp.Dispose();
tb.Dispose();
g.Dispose();
}
private void button2_Click(object sender, EventArgs e)
{
Bitmap bp = new Bitmap("1.jpg");
TextureBrush tb = new TextureBrush(bp, new Rectangle(0, 0, 100, 100));
Graphics g = this.CreateGraphics();
switch (comboBox1.SelectedItem.ToString().Trim())
{
case "Clamp":
tb.WrapMode = WrapMode.Clamp;
g.FillRectangle(tb, this.ClientRectangle);
bp.Dispose();
tb.Dispose();
g.Dispose();
break;
case "Tile":
tb.WrapMode = WrapMode.Tile;
g.FillRectangle(tb, this.ClientRectangle);
bp.Dispose();
tb.Dispose();
g.Dispose();
break;
case "TileFlipX":
tb.WrapMode = WrapMode.TileFlipX;
g.FillRectangle(tb, this.ClientRectangle);
bp.Dispose();
tb.Dispose();
g.Dispose();
break;
case "TileFlipXY":
tb.WrapMode = WrapMode.TileFlipXY;
g.FillRectangle(tb, this.ClientRectangle);
bp.Dispose();
tb.Dispose();
g.Dispose();
break;
case "TileFlipY":
tb.WrapMode = WrapMode.TileFlipY;
g.FillRectangle(tb, this.ClientRectangle);
bp.Dispose();
tb.Dispose();
g.Dispose();
break;
}
}
private void button3_Click(object sender, EventArgs e)
{
Bitmap bp = new Bitmap("1.jpg");
float[][] matrixitems ={
new float[]{
new float[]{0,
new float[]{0,0,1,0,0},
new float[]{0,0,0,1,0},
new float[]{0,0,0,0,1},
};
ColorMatrix colotMatrix = new ColorMatrix(matrixitems);
ImageAttributes imgAtt = new ImageAttributes();
imgAtt.SetColorMatrix(colotMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
TextureBrush tb = new TextureBrush(bp,new Rectangle(0,0,bp.Width,bp.Height),imgAtt);
tb.WrapMode = WrapMode.Tile;
Graphics g = this.CreateGraphics();
g.FillRectangle(tb, this.ClientRectangle);
bp.Dispose();
tb.Dispose();
g.Dispose();
}
private void button4_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
LinearGradientBrush lgb = new LinearGradientBrush(new Point(0, 0), new Point(300, 300), Color.Wheat, Color.Black);
g.FillRectangle(lgb, this.ClientRectangle);
g.Dispose();
lgb.Dispose();
}
private void button5_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
GraphicsPath gp = new GraphicsPath();
gp.AddLine(10, 10, 110, 15);
gp.AddLine(110,15,100,96);
gp.AddLine(100, 96, 15, 110);
gp.CloseFigure();
g.FillRectangle(Brushes.AliceBlue, this.ClientRectangle);
g.DrawPath(Pens.AntiqueWhite, gp);
gp.Dispose();
}
private void button6_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
GraphicsPath gp = new GraphicsPath();
gp.AddLine(10, 10, 110, 15);
gp.AddLine(110, 15, 100, 96);
gp.AddLine(100, 96, 15, 110);
gp.CloseFigure();
g.FillRectangle(Brushes.Blue, this.ClientRectangle);
g.SmoothingMode = SmoothingMode.AntiAlias;
PathGradientBrush pgb = new PathGradientBrush(gp);
pgb.CenterColor = Color.White;
pgb.SurroundColors=new Color[]
{
//Color.Yellow,
Color.Blue
//Color.Yellow,
//Color.Red
};
g.FillPath(pgb,gp);
g.DrawPath(Pens.Blue,gp);
pgb.Dispose();
gp.Dispose();
}
private void button7_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
HatchBrush hb = new HatchBrush(HatchStyle.Cross, Color.White, Color.Blue);
g.FillRectangle(hb, this.ClientRectangle);
hb.Dispose();
}
private void button8_Click(object sender, EventArgs e)
{
Graphics g=this.CreateGraphics();
g.FillRectangle(Brushes.White, this.ClientRectangle);
HatchBrush hb = new HatchBrush(HatchStyle.WideUpwardDiagonal,
Color.White,
Color.Black);
Pen p = new Pen(hb, 8);
g.DrawRectangle(p, 15, 15, 70, 70);
hb.Dispose();
p.Dispose();
g.Dispose();
}
说明:
1. button1_Click:用简单的方式对工作窗口进行填充
this.ClientRectangle:当前的工作窗口
2. button2_Click:更改TextureBrush画刷的平铺方式
Tile 平铺渐变或纹理。
TileFlipX 水平反转纹理或渐变,然后平铺该纹理或渐变。
TileFlipY 垂直反转纹理或渐变,然后平铺该纹理或渐变。
TileFlipXY 水平和垂直反转纹理或渐变,然后平铺该纹理或渐变。
Clamp 纹理或渐变没有平铺。
Clamp
Tile
TileFlipX
TileFlipXY
TileFlipY
button3_Click:颜色矩阵的使用
ColorMatrix:定义包含 RGBA 空间坐标的 5 x 5 矩阵。ImageAttributes 类的若干方法通过使用颜色矩阵调整图像颜色。
ImageAttributes :对象包含有关在呈现时如何操作位图和图元文件颜色的信息。ImageAttributes 对象维护多个颜色调整设置,包括颜色调整矩阵、灰度调整矩阵、灰度校正值、颜色映射表和颜色阈值。呈现过程中,可以对颜色进行校正、调暗、调亮和移除。要应用这些操作,应初始化一个 ImageAttributes 对象,并将该 ImageAttributes 对象的路径(连同 Image 的路径)传递给 DrawImage 方法。
button4_Click:LinearGradientBrush渐变画刷的使用
button5_Click:GraphicsPath表示一系列相互连接的直线和曲线
CloseFigure:闭合当前图形并开始新的图形。如果当前图形包含一系列相互连接的直线和曲线,该方法通过连接一条从终结点到起始点的直线,闭合该环回。
button6_Click:PathGradientBrush渐变填充 GraphicsPath 对象的内部
CenterColor:中心颜色
SurroundColors:周围渐进颜色
:HatchBrush画刷使用
button7_Click
HatchStyle :填充样式
Horizontal 水平线的图案。
Vertical 垂直线的图案。
ForwardDiagonal 从左上到右下的对角线的线条图案。
BackwardDiagonal 从右上到左下的对角线的线条图案。
Cross 指定交叉的水平线和垂直线。
DiagonalCross 交叉对角线的图案。
Percent05 指定 5% 阴影。前景色与背景色的比例为 5:100。
Percent10 指定 10% 阴影。前景色与背景色的比例为 10:100。
Percent20 指定 20% 阴影。前景色与背景色的比例为 20:100。
Percent25 指定 25% 阴影。前景色与背景色的比例为 25:100。
Percent30 指定 30% 阴影。前景色与背景色的比例为 30:100。
Percent40 指定 40% 阴影。前景色与背景色的比例为 40:100。
Percent50 指定 50% 阴影。前景色与背景色的比例为 50:100。
Percent60 指定 60% 阴影。前景色与背景色的比例为 60:100。
Percent70 指定 70% 阴影。前景色与背景色的比例为 70:100。
Percent75 指定 75% 阴影。前景色与背景色的比例为 75:100。
Percent80 指定 80% 阴影。前景色与背景色的比例为 80:100。
Percent90 指定 90% 阴影。前景色与背景色的比例为 90:100。
LightDownwardDiagonal 指定从顶点到底点向右倾斜的对角线,其两边夹角比 ForwardDiagonal 小 50%,但它们不是锯齿消除的。
LightUpwardDiagonal 指定从顶点到底点向左倾斜的对角线,其两边夹角比 BackwardDiagonal 小 50%,但这些直线不是锯齿消除的。
DarkDownwardDiagonal 指定从顶点到底点向右倾斜的对角线,其两边夹角比 ForwardDiagonal 小 50%,宽度是其两倍。此阴影图案不是锯齿消除的。
DarkUpwardDiagonal 指定从顶点到底点向左倾斜的对角线,其两边夹角比 BackwardDiagonal 小 50%,宽度是其两倍,但这些直线不是锯齿消除的。
WideDownwardDiagonal 指定从顶点到底点向右倾斜的对角线,其间距与阴影样式 ForwardDiagonal 相同,宽度是其三倍,但它们不是锯齿消除的。
WideUpwardDiagonal 指定从顶点到底点向左倾斜的对角线,其间距与阴影样式 BackwardDiagonal 相同,宽度是其三倍,但它们不是锯齿消除的。
LightVertical 指定垂直线的两边夹角比 Vertical 小 50%。
LightHorizontal 指定水平线,其两边夹角比 Horizontal 小 50%。
NarrowVertical 指定垂直线的两边夹角比阴影样式 Vertical 小 75%(或者比 LightVertical 小 25%)。
NarrowHorizontal 指定水平线的两边夹角比阴影样式 Horizontal 小 75%(或者比 LightHorizontal 小 25%)。
DarkVertical 指定垂直线的两边夹角比 Vertical 小 50% 并且宽度是其两倍。
DarkHorizontal 指定水平线的两边夹角比 Horizontal 小 50% 并且宽度是 Horizontal 的两倍。
DashedDownwardDiagonal 指定虚线对角线,这些对角线从顶点到底点向右倾斜。
DashedUpwardDiagonal 指定虚线对角线,这些对角线从顶点到底点向左倾斜。
DashedHorizontal 指定虚线水平线。
DashedVertical 指定虚线垂直线。
SmallConfetti 指定带有五彩纸屑外观的阴影。
LargeConfetti 指定具有五彩纸屑外观的阴影,并且它是由比 SmallConfetti 更大的片构成的。
ZigZag 指定由 Z 字形构成的水平线。
Wave 指定由代字号“~”构成的水平线。
DiagonalBrick 指定具有分层砖块外观的阴影,它从顶点到底点向左倾斜。
HorizontalBrick 指定具有水平分层砖块外观的阴影。
Weave 指定具有织物外观的阴影。
Plaid 指定具有格子花呢材料外观的阴影。
Divot 指定具有草皮层外观的阴影。
DottedGrid 指定互相交叉的水平线和垂直线,每一直线都是由点构成的。
DottedDiamond 指定互相交叉的正向对角线和反向对角线,每一对角线都是由点构成的。
Shingle 指定带有对角分层鹅卵石外观的阴影,它从顶点到底点向右倾斜。
Trellis 指定具有格架外观的阴影。
Sphere 指定具有球体彼此相邻放置的外观的阴影。
SmallGrid 指定互相交叉的水平线和垂直线,其两边夹角比阴影样式 Cross 小 50%。
SmallCheckerBoard 指定带有棋盘外观的阴影。
LargeCheckerBoard 指定具有棋盘外观的阴影,棋盘所具有的方格大小是 SmallCheckerBoard 大小的两倍。
OutlinedDiamond 指定互相交叉的正向对角线和反向对角线,但这些对角线不是锯齿消除的。
SolidDiamond 指定具有对角放置的棋盘外观的阴影。
LargeGrid 指定阴影样式 Cross。
Min 指定阴影样式 Horizontal。
Max 指定阴影样式 SolidDiamond。
button8_Click:HatchBrush画刷
本人也在学习GDI+,写得比较简单,让高手见笑了。欢迎高手给我指点
相关文章: