您的位置:首页 > 其它

绘图与类(整理)

2015-12-25 12:57 148 查看
一.绘图

单词:Graphics 制图学 、Paint 绘画、Nationality 国籍、virtual 实质上的

1.有关绘图的类都在Drawing命名空间中

Using this.System.Drawing;

2.得到了窗体的“画笔”对象,其实就是窗体的表面

//画图要获得该控件的Graphics,通过this.CreateGraphics();

Graphics g = this.CreateGraphics();

3.通过CreateGraphics创建的对象,要销毁对象,否则会越来越卡

g.Dispose();

4.绘制空心图形用Draw,使用画笔

g.DrawEllipse(Pens.Red,20,40,50,50);

5.绘制实心图形用Fill,使用画刷

g.FillEllipse(Brushes.Red,20,40,50,50);

6.通过控件的Paint事件绘图,在控件需要重新绘图自己时发生的事件

7.通过e.Graphics获得Graphics对象

Graphics g = e.Graphics;

8.可以new一个新的画笔,画笔需要销毁

Pen pen = new Pen(Color.Red, 10);

9.什么养类型的对象需要使用完成后Dispos()?

答:Pen,Brush,Font,Image,Ico,FileSteram(文件操作),网络操作等。(在这些类中封装了一些操作系统的资源)//Pens.XXX或者Brushes.XXX等不需要,手动创建才需要。强行释放资源会出错。都是继承了IDisposable接口,作用:将此接口的Dispose方法与垃圾回收器一起使用来显式释放非托管资源。

10.为什么一篇word文档,在电脑上和打印机上显示效果一样?

答:世界坐标(逻辑坐标)、页面坐标、设备坐标。会自动转换。

11.PointF和Point,PointF可以写小数

12.为什么C#中没有System.Convert.ToFloat?

float,int这种类型只是C#的语法糖而已,在.NET框架中他们是Single,Int32等等。最好不要使用float,int,short,这样在转换其他语言时会出现困惑。

13.GraphicsPath方法画图形,确定坐标点,再Draw

GraphicsPath path = new GraphicsPath();

path.AddLines(points);

g.DrawPath(Pens.Black, path);

二.虚方法 方法重写抽象类

单词: Sealed 密封、Shape 形状、Area 面积、Circle 圆、Square 正方形

Virtual注意:

1.使用virtual关键字表示方法,写在返回值的签名public virtual或者virtual public

2.使用virutal关键字修饰的方法必须实现{}

3.子类可以重写,也可以不重写

4.子类重写时,使用override关键字

5.注:方法重写时,方法签名必须与父类签名万泉河一致,否则重写不成功,其中包括“返回值”

Abstract注意:

1.抽象类不能实例化,所以不能通过base来调用

2.如果一个类中有任何抽象成员,那么这个类也必须是抽象abstract class

3.子类继承抽象类后,必须重写父类中所有的抽象成员,除非子类也是一个抽象类

4.抽象成员在抽象类中不能有任何实现

方法重写:

1.方法重写只有用Virtual、abstract、overttde修饰的方法在继承后子类可以重写//实现重写的3个关键字

2.什么事方法重写?

答:方法重写时指子类继承父类后在子类中有一个与父类中某个方法签名一致,但方法内容可以重新定义的方法,并用override关键字修饰。

3.方法重写的意义:为所有子类定义了某种规范(某种必须有的规范),多肽//这里的规范可以确定为“行为”,就是方法。//以后用到得借口中提到的规范,其实目的就是让新增加的泪必须具有的某些方法,这样能满足我们程序中的要求。

抽象类:

1.abstract关键字修饰;不能实例化;可以有抽象成员也可也有非抽象成员(1.抽象成员类必须标记为abstract,并且不能有任何实现;2.类中的抽象成员在子类中必须实现(overrider),除非子类也是抽象类);

2.抽象类的意义:不能从抽象类创建对象,它的意义在于被扩展。代码重用、多肽(简化了is DataType 的判断)。

3.普通类可以用多肽实现么?

可以,虚方法。

virtual方法和abstract方法的区别:

1.virtual方法子类可以override,也可以不override。

2.Abstract标记的成员在子类中必须overrider,除非子类也是抽象类。

ToString()方法、Equals来自于Object,任何类都有,通过override有了不同实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: