C#定义控件的可以分为三种:
1 复合控件:将标准控件组合起来
class MyControl:UserControl{}
比如可以重载OnLayout()函数 ->重写控件的布局
使用 Browsable注解和DesignerSerializationVisibility注解可以在控件属性面板中显示属性
对于已经存在的父类属性,重写时可以加上override。
2 扩展控件:继承于标准控件
class MyControl:Button{}
3 自定义控件: 完全地自定义一个控件
class MyControl:Control{}
继承于Control类,就可以从头到尾定制一个控件
通常我们重写OnPaint()方法,实现控件的绘制。
一般需要先调用base.OnPaint()方法,使用Graphics来绘制。
在OnPaint中绘制时,要提供相关坐标,该坐标是以控件自身的左上角为(0,0)坐标。
OnPaint一般绘制前景,而背景绘制我们可以放到OnPaintBackground中。
图片的绘制时,使用DrawImage方法绘制。