最近在看关于C# GDI+相关的东西,之前虽然用过,但是没有进行过系统的基础的学习,我只是把我自己的心得记录一下。
GDI+:Graphics Device Interface Plus,翻译过来就是图形设备接口+,提供了图形处理功能。命名空间System.Drawing,我们用到比较多的就是Bitmap(封装了一个包含了图像的像素数据和其他属性的GDI+位图,。 Bitmap 是用于处理由像素数据定义的图像的对象。),Graphics(封装一个 GDI+ 绘图图面)相当于是一个画布,从指定的 Image 可以创建新的 Graphics画布。
[C#] 纯文本查看 复制代码 //定义一个位图 宽400x高400
Bitmap bitmap = new Bitmap(400, 400);
//创建画布
Graphics gh = Graphics.FromImage(bitmap); 画布创建好之后,我们就可以调用Graphics的方法来在画布上进行画图操作了,可以画矩形、直线、曲线、文本字符串等等,都可以调用方法来实现。
[C#] 纯文本查看 复制代码 //清空画布并以白色填充
gh.Clear(Color.White);
//在指定的左上角坐标x y 画矩形
gh.DrawRectangle(Pens.Red, 5, 5, 400-10, 400-10);
//在指定的左上角坐标 x y 填充颜色
gh.FillRectangle(Brushes.Gray, 5, 5, 400 - 10, 400 - 10);
Pen p = new Pen(Color.Blue, 5);//设置笔的粗细为,颜色为蓝色
//画虚线
p.DashStyle = DashStyle.Dot;//定义虚线的样式为点
gh.DrawLine(p, 10, 10, 200, 10);
//自定义虚线
p.DashPattern = new float[] { 2, 1 };//设置短划线和空白部分的数组
gh.DrawLine(p, 10, 20, 200, 20);
//画箭头,只对不封闭曲线有用
p.DashStyle = DashStyle.Solid;//恢复实线
p.EndCap = LineCap.ArrowAnchor;//定义线尾的样式为箭头
gh.DrawLine(p, 10, 30, 200, 30);
Font ft = new Font("微软雅黑", 12);
//画文本内容
gh.DrawString("GDI+ C# 测试", ft,Brushes.AliceBlue, new PointF(bitmap.Width-200, bitmap.Height-30));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
Response.ContentType = "image/jpg";
bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
gh.Dispose();
bitmap.Dispose();
最后也没呈现的效果如图:
当然我们还可以将我们的水印图片画到图片上
[C#] 纯文本查看 复制代码
Image img;//原图
Image waterImg;//水印图
gh.DrawImage(waterImg, new System.Drawing.Rectangle(img.Width - waterImg.Width - 10, img.Height - waterImg.Height - 10, waterImg.Width, waterImg.Height), 0, 0, waterImg.Width, waterImg.Height, System.Drawing.GraphicsUnit.Pixel);
GDI+这块水还很深,这只是基本的不能在基本的入门级的了,不过我感觉也基本上可以满足我们平时的开发需求了,反正学无止境吧。
|