http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6410|回复: 0

[学习交流] 记录一下最近学习的C# GDI+相关心得

[复制链接]
发表于 2016-6-2 16:54:35 | 显示全部楼层 |阅读模式
    最近在看关于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();


    最后也没呈现的效果如图:
QQ截图20160602164531.png

    当然我们还可以将我们的水印图片画到图片上
[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+这块水还很深,这只是基本的不能在基本的入门级的了,不过我感觉也基本上可以满足我们平时的开发需求了,反正学无止境吧。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-19 20:51

© 2014-2021

快速回复 返回顶部 返回列表