用Graphics绘图的两种方法
在学习C#画图的时候非常的蛋疼。其中的一条原因是之前没有搞过, 其中之二是办公的环境有点差。这就是我找的2种学习非常蛋疼的原因。虽然是这样但是学还是要学的。
本篇文章都是在xxx_paint(object sender, PaintEventArg e ) 重绘函数中运作的。
绘图的两种自定义 Graphics对象的方法
1: 是用重绘函数自带的参数来进行画图
e.graphics.DrawLine( new Pen(Color.Red,), new Point(0,0), new Point(100,100));
2:先创建画布, 然后用e.graphics.DrawImage( )的方式,
Bitmap bmp = new Bitmap(this.panel.Width, this.panel.Height); //创建画布
Graphics graphics = Graphics.FromImage(bmp);//创建画图对象
graphics.DrawLine( new Pen(Color.Red,), new Point(0,0), new Point(100,100));//开始画图
e.graphics.DrawImage(bmp, this.panel.Location); //最重要的一步,要不然效果不会出来
总结:
绘制到Bitmap对象上的优点
1>性能
可以提前绘制图像,再在需要它时在Paint事件中绘制图像。这样,就只需绘制一次图形,而不是在每次接收到Paint事件时都绘制他们。如果绘图过程比较费时时,这样做肯定会提高性能。
2>动态生成图像
有时需要在网页中包含一个动态生成的图形。为此,可以在Web服务器上绘制图像,然后在网页上包含一个对该动态生成图像的引用。
3>准备复杂的3D图形
如果图形有多个层,即首先需要绘制背景,然后绘制中间图像前景,在屏幕之外绘制图像就允许先完全准备好图像,再把他们显示到屏幕上。这将防止因在屏幕上绘制多层图像而导致的难看的效果。而且,一些图像处理效果例如模糊和锐化,只能在显示图像之前通过直接处理图像来获得。提前绘制图像,就可以使用这些处理功能。
备注:
其中的panel 是一个控件, 名字就是 Panel, 在属性中 (layout)DOCK中是 Fill.
这就是我总结的2中画图的方式,如果有其它的大家可以留言, 方便我去整理。 每天进步一点点。