| 最近在看关于C# GDI+相关的东西,之前虽然用过,但是没有进行过系统的基础的学习,我只是把我自己的心得记录一下。 GDI+:Graphics Device Interface Plus,翻译过来就是图形设备接口+,提供了图形处理功能。命名空间System.Drawing,我们用到比较多的就是Bitmap(封装了一个包含了图像的像素数据和其他属性的GDI+位图,。 Bitmap 是用于处理由像素数据定义的图像的对象。),Graphics(封装一个 GDI+ 绘图图面)相当于是一个画布,从指定的 Image 可以创建新的 Graphics画布。
 
 画布创建好之后,我们就可以调用Graphics的方法来在画布上进行画图操作了,可以画矩形、直线、曲线、文本字符串等等,都可以调用方法来实现。[C#] 纯文本查看 复制代码  //定义一个位图 宽400x高400
            Bitmap bitmap = new Bitmap(400, 400);
            //创建画布
            Graphics gh = Graphics.FromImage(bitmap);
 [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+这块水还很深,这只是基本的不能在基本的入门级的了,不过我感觉也基本上可以满足我们平时的开发需求了,反正学无止境吧。
 
 |