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

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

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

网易考拉推荐

Graphics Programming with GDI+ 学习笔记(二)  

2011-10-25 12:37:43|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 Graphics Programming with GDI+ 学习笔记(一) - Castor - 趁年轻,多折腾

第二章   第一个GDI+程序

解析度(resolution)表示图形对象的输出质量,或者图像的DPIdots per inch

100DPI的意思是水平和垂直方向上各有100个像素。

Graphics Programming with GDI+ 学习笔记(二) - Castor - 趁年轻,多折腾

实际上对于LCD等,使用的是水平和垂直方向上的总数,例如1024*768等。

窗体、打印和位图都可以作为绘图平面(或者叫做画布)。

坐标系统

采用笛卡尔坐标。象限:quadrantaxes:坐标轴

GDI+中,坐标系是这样的:

 

Graphics Programming with GDI+ 学习笔记(二) - Castor - 趁年轻,多折腾

 

世界(World)坐标系和页面(Page)坐标系、设备(device)坐标系

默认的就是世界坐标系,经过变换后的坐标系是页面坐标系,这一过程叫做世界变换。

将页面坐标系转化为设备坐标系的过程是页面变换。

第一个程序

使用FormPaint事件或者OnPaint方法(重载)都可以。

使用FromImageFromHwndFromHdc的静态方法都能获取Graphics对象。

例如:

Graphics g = Graphics.FromHwnd(this.Handle);

或者:

       Bitmap bmp =new Bitmap(600,400,PixelFormat.Format32bppArgb);

Graphics g = Graphics.FromImage(bmp);

绘制图形

private void Form1_Paint(object sender, PaintEventArgs e)

{

    Graphics g = e.Graphics;

    g.SmoothingMode = SmoothingMode.AntiAlias;

    Rectangle rect = new Rectangle(20, 20, 100, 100);

    Pen redPen = new Pen(Color.Red, 3);

    Pen blackPen = Pens.Black;

    SolidBrush greenBrush = new SolidBrush(Color.Green);

    g.DrawRectangle(redPen, rect);

    g.FillEllipse(greenBrush, rect);

    g.DrawLine(blackPen, 0, 250, this.Width, 250);

    g.FillEllipse(Brushes.Blue, 70, 220, 30, 30);

    g.FillEllipse(Brushes.SkyBlue, 100, 210, 40, 40);

    g.FillEllipse(Brushes.Green, 140, 200, 50, 50);

    g.FillEllipse(Brushes.Yellow, 190, 190, 60, 60);

    g.FillEllipse(Brushes.Violet, 250, 180, 70, 70);

g.FillEllipse(Brushes.Red, 320, 170, 80, 80);

greenBrush.Dispose();

redPen.Dispose();

g.Dispose();

}

效果如下:

Graphics Programming with GDI+ 学习笔记(二) - Castor - 趁年轻,多折腾

 

使用完成之后要释放画笔、画刷和图形对象。

当不再需要某个使用new关键字创建的对象时,最好显式地调用其Dispose方法释放。

基本的GDI+对象

Color结构体

有许多静态的成员表示某个具体的颜色。其他属性如ARGBIsEmptyIsKnownColorIsNamedColorIsSystemColorName等。

方法有FromArgbFromKnownColorFromNameGetBrightnessGetHueGetSaturationToArgbToKnownColor等。可以获取HSBhue-saturation-brightness)的相关信息。

PointRectangleSize结构体

都有对于的浮点类型。

PointCeilingRoundTruncate等方法,还可以和Size对象进行运算。

Rectangle方法CeilingContainsFromLTRBInflateIntersectIntersectsWithOffsetRoundTruncateUnion

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

历史上的今天

评论

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

页脚

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