protected override void OnPaint(PaintEventArgs e)在何时运行?
我下载了一些源码,看到有人在窗体代码里有:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
..........
}
这样的写法,来在窗体上边画一些图案。
查到Form里有:
protected override void OnPaint(PaintEventArgs e);
//
//
// 参数:
// e:
// 包含事件数据的 System.EventArgs。
[EditorBrowsable(EditorBrowsableState.Advanced)]
开始搞不清她是方法,还是事件?(即如果是方法,不知道她是何时被调用的?)
后来回忆起,老师讲C#语言规范时,拿事件event举例:写事件的发行者时触发事件要 提供一个受保护的虚拟方法,来触发事件,即按老师说的上边Form里
应该是这样的:
protected override void OnPaint(PaintEventArgs e);
{
PaintEventHandler handler = paint;
//声明一个临时的委托,防止可能的线程同步
if (handler != null)
{
handler(this, e);
}
}
public delegate void PaintEventHandler (object sender,PubEventArgs e);//声明所需代理
public event PaintEventHandler paint;//事件的声明
他是重写了这个受保护的虚拟方法吗?他是在哪被触发而运行的呢?
好像有点乱,呵呵
相关推荐
OnPaint 重绘窗体
重写窗体重绘事件 protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawImage((Image)pic,new Point(0,0));//重绘窗体 }
C#中 paint()与Onpaint()的区别
paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
C#自定义数学坐标类
自己定义的数学坐标类,可以直接在Paint事件中调用Graphics画出来,实现方式如下: protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = CustomCoordinate.GetCoordinate(e.Graphics, GraphicsUnit.Millimeter, 60F, 30F, 4, 2, 10); Pen redPen = new Pen(Color.Red, 0.5F); g.DrawLine(redPen, 0, 0, CustomCoordinate.GetX(20F), CustomCoordinate.GetY(20F)); }
C# pictureBox 绘制矩形框
重写pictureBox相关事件,支持在pictureBox上绘制多矩形框 ,以及选中绘制框,选中后支持边框拉伸。
combobox 去掉边框,更改背景色 字体颜色
combobox 可用的时候显示下划线和选择按钮,不可用的时候只显示下划线和字体。字体的颜色还有控件的背景颜色都可以随便的更改。


