C#如何调用label的paint事件如题 谢谢了

C#如何调用label的paint事件如题 谢谢了,第1张

这么做没必要啊 ,如果一定要的话,可以参考下面的代码: private void button1_Click(object sender, EventArgs e) { PaintEventArgs temp= new PaintEventArgs(label1CreateGraphics(), new Rectangle(0,0,label1Width,label1Height)); label1_Paint(sender, temp); } private void label1_Paint(object sender, PaintEventArgs e) { MessageBoxShow("a"); }

为了能够激活Paint事件,您必须对UserPaint的ControlStyle进行设置,这样才会激活TextBox的Paint事件,而不是由系统自己去完成相应的事件。如下所示: Public Class MyTextBox Inherits SystemWindowsFormsTextBox Public Sub New() SetStyle(ControlStylesUserPaint, True) End Sub Protected Overrides Sub OnPaint(ByVal e As SystemWindowsFormsPaintEventArgs) 'Your code here End Sub End Class 关于ControlStylesUserPaint以及ControlStyles其他属性的设置,请参考MSDN: >

不是说不能做到,只是做到了对你没好处。

如果把2禁用,那么你拿一个其他什么程序的窗口拖到你这个程序之上,然后再把它拖走,很有可能它刚刚盖住的地方就是一片白,真的。

你可以考虑对于每个小块,每次先绘制到内存中的一块缓冲区(Bitmap对象)里面,然后再把Bitmap刷到窗口上。如果没有特别需要,这个Bitmap就不需要更新,每次直接把Bitmap刷上窗口即可,比每次从头绘制应该要快不少

另:没记错的话paint事件里面可以获取“需要重新绘制的矩形”,你只管绘制这块矩形之内的就好,其他部分可以不用重新绘制

      //Form1的Paint事件处理 函数

      private void Form1_Paint(object sender, PaintEventArgs e)

        {

            Graphics g = eGraphics;

             //渐变色:起点(0, 0)从红色 --->终点(250, 250)蓝色

            LinearGradientBrush brush = new LinearGradientBrush(

                new Point(0, 0), new Point(250, 250),

                ColorRed, ColorBlue);

             Pen pen = new Pen(brush);

             //画线

            gDrawLine(pen, 50, 50, 300, 50);

            

            penDispose();

            brushDispose();

        }

在Paint事件中,Paint的成员PaintEventArgs类有Graphics属性,e是PaintEventArgs类的对象。用对象e调用Graphics属性。你的DrawMe方法中没有输入参数PaintEventArgs e,应当用CreateGraphics方法创建图形对象:

Graphics g = thisCreateGraphics(); //窗体获取Graphics对象的引用

Graphics g = controlCreateGraphics(); //控件获取Graphics对象的引用

你这里大概是窗体,因此你的代码改为:

Graphics g = thisCreateGraphics();

gFillRectangle(blueBrush, x, y, width, height);

就可以了。

如果你想要在DrawMe中添加参数e为图形对象,DrawMe应当是某个事件(通常是Paint事件)的处理程序,要声明一个委托和事件,构造事件处理方法,这个事件处理方法是根据你的委托和事件名称,当你敲+=时系统提示你按Tap键,自动给你加上的,并且参数也是系统给你加上的,一般不自己做,在属性框选择合适的事件。

对控件的值进行修改后就会立即触发 OnPaint 事件。

所以当你在 label1 的 OnPaint 事件处理方法里修改了 label1 的属性(Text)后,由于 UI 界面发生了变化,因此导致界面重置并触发 OnPaint,然后就陷入死循环了 =-=

以上就是关于C#如何调用label的paint事件如题 谢谢了全部的内容,包括:C#如何调用label的paint事件如题 谢谢了、paint事件是怎么触发的啊谁知道快快帮个忙哈!求大神帮助、各位编程精英们帮我看个问题,winform datagridview控件但是Paint事件执行多次,如何阻止它有厚礼相送等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10629586.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存