请教Paint事件 1:Paint事件到底是个什么东东?MSDN。为什么好多绘图都有Paint事件?:2:在重绘控件时发生?啥意思?一直搞不懂!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Form1_Load(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen pen1 = new Pen(Color.Red); graphics.DrawLine(pen1, 10, 10, 100, 100); }为什么上面的Load事件,不能画出直线?而下面的Paint事件能画出 private void Form1_Paint(object sender, PaintEventArgs e) { Graphics graphics = this.CreateGraphics(); Pen pen1 = new Pen(Color.Red); graphics.DrawLine(pen1, 10, 10, 100, 100); }Load事件不是启动窗口,就执行的事件吗?为什么不能画出直线?谢谢!!! load能画出,只不过在厨房onpaint事件后,就会被擦出,所以画线过程要你写在onpaint中,不要写到其他地方 private void Form1_Paint(object sender, PaintEventArgs e) { MessageBox.Show("uiuiu"); }这个不是重绘控件,但还是发生了,不断的弹出对话窗口...为什么要不断的弹出呢,关不了对话窗口 当你的窗体A被另一个窗体B遮挡时,被遮挡的部分会在B窗体移开时重新绘制,这时就会触发Paint事件,如果你的控件的一部分刚好在这个区域内,控件的Paint事件也会被触发。Paint事件参数PaintEventArgs的ClipBounds属性就是这个需要重绘区域的位置和大小,如果要绘制的图形较大或较复杂,你可以先测试要绘制的内容是否在这个区域内,如果在这个区域内才重新绘制,这样可以节约一些绘制的开销。 private void Form1_Paint(object sender, PaintEventArgs e) { Graphics graphics = e.Graphics; Pen pen1 = new Pen(Color.Red); graphics.DrawLine(pen1, 10, 10, 100, 100); }可是,上面代码,我的窗口,并没有变“脏”,为什么还是触发了Paint事件呢? Paint事件一般都由外部触发,如果要以代码的方式触发可以使用Invalidate、Update或Refresh方法,你的这段代码说明不了什么问题。你所说的没有变脏不知道是在什么环境下,是否鼠标键盘都没有动,据我所知如果窗体放着不动,只是移移鼠标是不会触发Paint事件的,除非你安装了翻译软件并开启屏幕取词的功能。 没有变脏,主要指这些啊:窗口更改了大小被其他窗口覆盖(部分覆盖或完全覆盖)最小化后又还原菜单被打开再关闭打开对话框再关闭....Paint事件触发,不会没有条件的吧 用paint是为了不需要自己去"主动"绘制,则由系统去根据需要绘制.但paint本质上和绘制没有任何关系,只是提供对graphics的主动事件引发. 是啊,Paint由系统根据需要绘制........但 private void Form1_Paint(object sender, PaintEventArgs e) { Graphics graphics = e.Graphics; Pen pen1 = new Pen(Color.Red); graphics.DrawLine(pen1, 10, 10, 100, 100); }有什么需要呢?但还是画出了直线,难道Paint是无条件的绘制吗? 如果是XP系统,由于是所有窗口在一个层中渲染,所以只要屏幕中任何地方有一点变化都导致paint 在DataTable删除行后,为什么更新到数据库不成功? 关闭windows当前窗口 ====如何读取App.config文件中的自定义配置节==== C#将指定目录下的文件夹和文件生成一个目录树显示到一个treeView控件中的代码 DllImport怎么调用这样的DLL 那位能给我一个具体的例子 怎么C#中没有画线和画矩形的控件? 请教一个用c#实现客户端和服务器端文件传输的问题, 详情请进来 c#中数据装箱\开箱的问题... 小白用C# WPF写了一个PING IP程序为什么运行界面一直卡死 请教Graphics 类 AxWindowsMediaPlayer 控件获得某一时间的图片。
{
Graphics graphics = this.CreateGraphics();
Pen pen1 = new Pen(Color.Red);
graphics.DrawLine(pen1, 10, 10, 100, 100);
}
为什么上面的Load事件,不能画出直线?而下面的Paint事件能画出
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics graphics = this.CreateGraphics();
Pen pen1 = new Pen(Color.Red);
graphics.DrawLine(pen1, 10, 10, 100, 100);
}
Load事件不是启动窗口,就执行的事件吗?为什么不能画出直线?
谢谢!!!
{
MessageBox.Show("uiuiu");
}
这个不是重绘控件,但还是发生了,不断的弹出对话窗口...
为什么要不断的弹出呢,关不了对话窗口
Paint事件参数PaintEventArgs的ClipBounds属性就是这个需要重绘区域的位置和大小,如果要绘制的图形较大或较复杂,你可以先测试要绘制的内容是否在这个区域内,如果在这个区域内才重新绘制,这样可以节约一些绘制的开销。
{
Graphics graphics = e.Graphics;
Pen pen1 = new Pen(Color.Red);
graphics.DrawLine(pen1, 10, 10, 100, 100);
}
可是,上面代码,我的窗口,并没有变“脏”,为什么还是触发了Paint事件呢?
窗口更改了大小
被其他窗口覆盖(部分覆盖或完全覆盖)
最小化后又还原
菜单被打开再关闭
打开对话框再关闭
....
Paint事件触发,不会没有条件的吧
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics graphics = e.Graphics;
Pen pen1 = new Pen(Color.Red);
graphics.DrawLine(pen1, 10, 10, 100, 100);
}
有什么需要呢?但还是画出了直线,难道Paint是无条件的绘制吗?