以前在论坛上总是看到许多关于利用C#进行画图的操作,感觉很奇特!现在,自己也正在接触这一个模块的学习,开始时感觉有点茫然,但学习了一会就感觉思路稍微清晰了些!至少不像开始那样的茫然;在明白了原理之后,许多事情就清晰了许多!下面是我对这个知识点的简单总结(不足之处还望指教):
实现画图功能所需要的一些命名空间,如下:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
类名:
Graphics:该类主要是封装了GDI+绘图画板,是GDI+绘图中最核心的类;
Pen:用来画线、多边形、矩形、弧等外围的轮廓部分;
Brush:用来指定颜色、样式、纹理等填充封闭的图形;
Font:用来描绘字体;
Color:用来描绘颜色,可以是透明或半透明的。
private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();///创建对象,当然创建对象不止这一种;
Pen mypen = new Pen(Color.Blue, 2);///创建画笔,宽度:为2;
g.DrawLine(mypen, 10, 10, 50, 100);///画直线
mypen.Dispose();///移除操作;
g.Dispose();
}
private void button2_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();///创建对象;
Pen mypen = new Pen(Color.Blue, 2);///创建画笔;
g.DrawEllipse(mypen, 100, 100, 300, 300);///画圆
mypen.Dispose();
g.Dispose();
}
///对所画的图形进行填充:
/// <summary>
/// 填充圆操作;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
System.Drawing.SolidBrush brush1 = new System.Drawing.SolidBrush(System.Drawing.Color.Gray);
System.Drawing.Rectangle rect = new Rectangle(100, 100, 200, 200); ///必须同 g.DrawEllipse(mypen, 100, 100, 200, 200);
///参数一致,否则就会出现偏离的现象;
Graphics g = this.CreateGraphics();
Pen mypen = new Pen(brush1,2);
g.DrawEllipse(mypen, 100, 100, 200, 200);///画圆操作;
g.FillEllipse(brush1,rect);///填充上一步所画的圆;
mypen.Dispose();
g.Dispose();
}
///在绘画板中绘制文字操作;
private void button4_Click(object sender, EventArgs e)
{
///设置字体操作;
Font font = new System.Drawing.Font("宋体",60,System.Drawing.FontStyle.Bold);
Graphics g = this.CreateGraphics();
string txt = "字体操作";
Brush brush = new SolidBrush(System.Drawing.Color.Green);///填充颜色;
System.Drawing.StringFormat myformat = new System.Drawing.StringFormat();
g.DrawString(txt, font, brush,100,110,myformat);///绘制字符串操作;
myformat.Dispose();
g.Dispose();
}
///填充图像
private void button5_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Bmp File Bmp.*|*..bmp|All *.*|*.*"; ///对所选的图像进行筛选;
if(ofd.ShowDialog()!=DialogResult.OK){
return;
}
string path = ofd.FileName;///获取文件名;
Bitmap image1 = new Bitmap(path);
Graphics g = this.CreateGraphics();
g.DrawImage(image1, 10, 10);
g.Dispose();
}
通过对这几个操作的学习,让我也收获蛮多的,至少明白了对图像操作的一些原理!并且让我对.NET有了一个新的认识,虽然.NET在学习的初期很容易,因此就有人说.NET很简单;在这里我只想说句:许多事情别只看表面现象!当你对事情的更深层进行分析后你就会明白原来并不是那么的简单。
我曾听一位老师说过.NET就好比一个金字塔,越往上越困难;当时不怎么理解,但现在我完全理解这句话!
继续攀登自己人生的高峰!
学习中……