C#中的onpaint函数怎么用的

onpaint函数和paint时间到底是怎么一个触发关系,重现后的onpaint又是如何调用的,最好能够用代码演示一下,理论不明白的。回答好的我追一百分,不缺分。

不用代码演示,原理很简单的。

System.Windows.Forms.Form类中有一个Invalidate()方法成员,它把客户窗口区域标记为无效,并保引发Paint事件。
Invalidate()有几个重载方法,可以给它传送一个矩形参数(Rectangle类型),指定(使用页面坐标)需要重新绘制的窗口区域;如果不提供它任何参数,就把整个客户区域标记为无效;如果绘制区域不是矩形,可以向它传递区域参数(Region类型),Region和Rectangle不同是可以对多个Region做交并差操作,生成复杂的无效区域。
在编程中,根据需要绘图的区域,首先生成这块区域的对象,以该对象作为参数调用Invalidate()方法,就可以引发Paint事件了,这块区域在Paint看来就变成无效区域了。至于绘图是Paint事件处理干的事。
对Paint事件编程,首先根据Paint事件参数获取无效区域,然后在无效区域中按要求绘制就可以了。追问

客户矿口区域标记无效是什么意思,还有就是paint函数和form_paint是什么关系,paint重载后又是怎么调用的

追答

无效区域是整个图形的一个部分,一般来说不可能对整个图形进行绘制,而是绘制其中的一部分,当前绘制的这个部分就被设置成无效区域,告诉C#当前的绘图区域,也就是局部绘制的意思啦。这样做的好处是提高图形运算的效率,像大图在视窗中的滚动、拖放就应用到了局部绘制技术的例子。
上面说的事件对于窗体来说就是Form_Paint事件。
在C#中,调用Invalidate()或出现需要重新绘制的信息时(比如上层窗口被移动,底层窗口需要重画),首先调用OnPaint虚拟方法(C#中的窗体类和控件类都重载了OnPaint虚拟方法的),你可以在重载OnPaint虚拟方法并在方法内部编写绘图代码;然后引发Paint事件,你也可以在Paint事件中编写绘图代码。你自行决定将绘图代码编写在何处。

温馨提示:内容为网友见解,仅供参考
无其他回答

C#中的onpaint函数怎么用的
对Paint事件编程,首先根据Paint事件参数获取无效区域,然后在无效区域中按要求绘制就可以了。

请高手帮忙OnPaint()方法的用途 和主要功能(为什么可以直接重写)_百度...
你说的是C#吗?OnPaint()是在程序界面需要重绘的时候引发的事件,比如,第一次打开程序,或者程序从最小化到显示到窗体,甚至是从被遮盖到显示出来,都会引发。因为,windows规定,只保存的是显示出来部分的图像,否则,显示内存肯定是不够用的。OnPaint方法是继承下来的,同时也是允许重写的。当你需要在...

C#中的on_paint事件有什么作用?
10, 10, 200, 200); } \/\/或者覆盖基类的OnPaint方法 protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; \/\/画一个正方形 g.DrawRectangle(Pens.Blue, 10, 10, 200, 200); \/\/画一个圆 g.DrawEllipse(Pens.Red, 10, 10, 200, 20...

C# paint事件和onpaint事件 贪食蛇
onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了 内部是这样实现的:protected virtual OnPaint(PaintEventArgs e){ if(paint != null){ paint(this,e);} } 如果直接重写onpaint,paint就会失效;这样就不会失效:protected override OnPaint(PaintEventArgs e){ base.OnPaint(e)...

c#中paint函数怎么用
有时直接在窗口上绘制一次是不行的,必须不断绘制才可以,比如绘制窗口别其它窗口挡住了,然后你切换回来后就会看到被挡住的绘制图形没有了,如果在这里写的话窗口会自动重新绘制。

在C#中 绘图是要使用paint 函数,跪求怎样调用以及使用 给些具体的源...
你提到的paint函数,应该是窗体重绘时可以调用的方法,如下:protected override void OnPaint(PaintEventArgs e){ base.OnPaint(e);Graphics g = e.Graphics;Pen p1 = new Pen(Color.Blue);g.DrawEllipse(p1, 100, 100, 50, 50);Pen p2 = new Pen(Color.Red);g.DrawRectangle(p2, 0, 0,...

C#如何让控制onpaint事件
加一个开关(bool变量)a,只有当timer1_Tick时a才为true。然后你override OnPaint方法,在OnPaint开头判断,如果a不为true直接return,只有a为true时才执行绘图,绘图结束后把a设为false。你看如何?

如何在C#窗体内画线、矩形?
可以用GDI+来画,在窗体的Paint事件里画 首先创建一个Graphics 实例 Graphics g=e.Graphics;画线: g.DrawLine(new Pen(),new point(),new point()); 参数依次是画笔,第一个点 第二个点 画矩形: g.Rectangle(new Pen(),x,y,width,height); 参数依次是画笔,起点的x 起点的y 宽度 ...

C#中图形的重绘问题
如果你是一启动就显示你画的那些图形就可以通过重绘这个方法:protected override void OnPaint(PaintEventArgs e){ base.OnPaint(e);\/\/在此添加你绘图的那些代码;} 如果你是通过按了Button再显示画图的,那么你可以在你绘图代码的最后加上这句代码:this.Update();试试看....

C#中怎样在屏幕上拾取三个点画成三角形
注:必须让你的 form 加载 OnPaint 事件 private void Form1_Paint(object sender, PaintEventArgs e){ \/\/定义三个点的数组,第四个点标识起始点,方便DrawLines来画三角形。Point[] points = new Point[4];Random rand = new Random();for (int i = 0; i < 3; i++){ \/\/根据窗口大小...

相似回答