代码人生

CSharp代码示例每日一讲: 如何用GDI+技术在窗体上绘图?

代码人生 http://www.she9.com 2018-06-03 00:59 出处:网络 编辑:@技术狂热粉
其实,使用GDI+在窗体上绘图很简单,只要overrideForm的OnPaint方法,在这个方法里拿到绘图对象(Graphics)写绘制代码就可以了。我们可以重写onPaint方法,定义如下:Protected override void OnPain

CSharp代码示例每日一讲: 如何用GDI+技术在窗体上绘图?

其实,使用GDI+在窗体上绘图很简单,只要override Form的OnPaint方法,在这个方法里拿到绘图对象(Graphics) 写绘制代码就可以了。

我们可以重写onPaint方法,定义如下:

Protected override void OnPaint (PaintEventArgs args){//在这里添加自己的绘图代码。}

然后我们可以通过PaintEventArgs的图形属性获取绘图对象(Graphics),然后用来绘制、线条、形状、文本和图像。下面的代码在窗体的OnPaint方法中绘制了一些图形形状和文本。要测试此代码,请创建一个Windows应用程序并向其添加代码。

protected override void OnPaint(PaintEventArgs args)        

{           

             //从PaintEventArgs里获取绘图对象。           

             Graphics g = args.Graphics;           

             //绘制一个方框            

            g.DrawRectangle(            

            new Pen(Color.Blue, 3),            new Rectangle(10, 10, 50, 50));            //填充一个 ellipse           

            g.FillEllipse(            Brushes.Red,            new Rectangle(60, 60, 100, 100));            

            // 使用特定的字体和绿色纯色的画刷绘制文本            

            g.DrawString("Text",            new Font("Verdana", 14),            new SolidBrush(Color.Green),            

            200, 200);

}

使用Visual Studio .NET添加Paint事件处理程序

如果您正在使用Visual Studio IDE进行开发,添加paint事件处理程序的最简单方法是,在窗体或控件的属性窗口添加paint事件处理程序。

最后释放绘图资源

通常,绘图对象使用了非托管的资源,实现了IDispose接口,一般来说为了避免内存泄漏在绘制完成后,需要手动释放资源。如果你的图形对象是通过CreateGraphics方法或其他“CreateFrom”方法进行创建的,需要手动调研Dispose方法去释放资源。反正,如果你使用图形对象或来自PaintEventArgs的OnPaint方法,像我们上面写的代码,系统自动去处理,不需要再手写释放资源的代码。

注意:

如果你的Graphic对象来自于Windows控件,比如窗体,按钮、列表框或DataGrid等,不需要调用Dispose方法释放资源。可如果是你的代码创建了如画笔和画刷之类的对象,一定要记得释放它们。尽管.Net垃圾回收会处理资源释放的问题,但这样做常常会严重损害应用程序的性能。垃圾收集是一件代价高昂的事情,因为垃圾收集器会检查内存中是否有未被处理的对象,而这个过程会占用处理器时间。但是,对象的Dispose方法告诉垃圾收集器该对象已完成并准备好处理。调用Dispose方法可以消除垃圾收集器检查内存的需要,从而节省处理器时间。

另外,如果是在Web页面中使用绘图对象,通常的做法是在使用对象后立即Dispose它。

OnPaintBackground方法

OnPaintBackground方法绘制控件的背景。该方法通常在派生类中被重写,以便在不附加委托的情况下处理事件。调用OnPaintBackground方法会自动调用base的OnPaintBackground,所以我们不需要显式地调用它。

绘图除了在窗体上绘制之外,经常用的方式是在PictureBox控件上绘制。跟窗体上绘制类似,可以获取控件的Graphi对象绘制。还有一种方式在图像处理里经常用,就是创建一个Image直接在Image对象上图像绘制。


欢迎关注我的大鱼号:程序你好

微信公众号:codinghello



请关注公众号:程序你好
0

上一篇:

没有了 :下一篇

精彩评论

暂无评论...
验证码 换一张
取 消