注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

C# Graphics Programming笔记(四)  

2011-10-18 15:56:10|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近几天天天跑华科,今天上午又到那边去西门子笔试+面试了,不知道结果如何,感觉不是很好……英语对话悲剧了。

接着前面继续看,这一章说的是操作图形。

这本书依旧是红皮书系列的,由Rod Stephens编写,网上有电子版的,使用搜索引擎一下就能找到,不过只有英文版的,好在对英文水平要求不高,过了CET-4绝对可以无障碍阅读。全书分8个章节,从简单的图形对象、画笔、刷子到复杂的位图、图形变换、打印等技术,最后还描述了一个从WPF而来的强有力的对象:FlowDocument,虽然这本书不能做到面面俱到而又深动详实,但全书言简意赅,结构紧凑,从宏观的角度介绍了GDI+编程的原理和方法,是一本不错的GDI+编程入门书籍。

C Graphics Programming笔记(一) - Castor - 趁年轻,多折腾~~
=================================================================================

第四章    操作图形

你可以操作一个图形中的像素。

创建和加载图形

private void Form1_Paint(object sender, PaintEventArgs e)

{

    Bitmap bm = new Bitmap(200, 150);

    using (Graphics gr = Graphics.FromImage(bm))

    {

        gr.SmoothingMode = SmoothingMode.AntiAlias;

        gr.Clear(Color.Yellow);

        using (Pen thick_pen = new Pen(Color.Red, 5))

        {

            gr.DrawEllipse(thick_pen, 3, 3, 195, 145);

            thick_pen.Color = Color.Green;

            gr.DrawLine(thick_pen, 3, 3, 197, 147);

            thick_pen.Color = Color.Blue;

            gr.DrawLine(thick_pen, 3, 147, 197, 3);

        }

    }

    pictureBox1.Image = bm;

}

C Graphics Programming笔记(四) - Castor - 趁年轻,多折腾~~

注意Bitmap不能调用Dispose方法,否则图片框找不到图形加载。

当然也可以从文件中加载图形:

Bitmap bm = new Bitmap(@"C:\ColorCircle.png");

pictureBox1.Image = bm;

这个时候文件被占用,你不能重命名或者删除该文件。简单的Clone方法并不能解决问题,因为传递的依旧是相同的文件句柄。需要完全创建一个新的Bitmap对象,再复制,下面这个方法就可以:

private Bitmap LoadImageFile(string FileName)

{

    Bitmap bmp;

    try

    {

        Bitmap temp_bmp = new Bitmap(FileName);

        bmp = new Bitmap(temp_bmp.Width, temp_bmp.Height);

        using (Graphics gr = Graphics.FromImage(bmp))

        {

            gr.DrawImageUnscaled(temp_bmp, 0, 0);

        }

        temp_bmp.Dispose();

        temp_bmp = null;

        return bmp;

    }

    catch (System.Exception ex)

    {

        throw ex;

    }

}

保存图形文件

例如前面绘制的图形,可以使用Save方法保存:

bm.Save(@"C:\aFile.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

第二个参数指定了保存的格式。

  评论这张
 
阅读(1104)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016