如何让Paint事件不要频繁触发?

问题描述

哪位高手给点经验,指点迷津?窗体上控件如Panel,PictureBox的Paint事件,在哪些情况下触发?可否仅由我们调用RaiseEventPaint(myPanel,panelPaintEvent)时触发?如何做到?我的程序大致为:在窗体上放置一个Panel作容器,其中再放置PictureBox用于画图,可能稍微有点复杂吧~_~(1)自定义myClass,其中成员函数用于画图Draw(2)画图函数Draw触发Panel画图(3)Panel画图的Paint事件中调用过程DrawPanel实现在Panel画图(4)在DrawPanel过程末尾触发PictureBox的Paint事件(5)最终在PictureBox的Painte事件中完成Picturebox的画图过程FriendWithEventmyPanelAsSystem.Windows.Controls.PanelFriendWithEventmyPicboxAsSystem.Windows.Controls.PictureBoxPublicClassmyClassPublicShadowsEventPaint(ByValsenderAsObject,ByValeAsPaintEventArgs)PrivatepanelPaintEvntHanle,picboxPaintEvntHandleAsPaintEventArgsPublicSubDrawing()......RaiseEventPaint(myPanel,panelPaintEvntHanle)EndSubPrivateSubDrawPanel().......RaiseEventPaint(myPicBox,picboxPaintEvntHandle)EndSubPrivateSubmyPanel_Paint(ByValsenderAsObject,ByValeAsPaintEventArgs)HandlesmyPanel.Paint......CallDrawPanel()EndSubPrivateSubmyPicbox_Paint(ByValsenderAsObject,ByValeAsPaintEventArgs)HandlesmyPicbox.Paint......EndSubEndClass但是,以上程序导致频繁触发Paint事件,频繁画图,程序效率不高,可否帮忙改善:即仅在需要时RaiseEvent后才触发一次?

解决方案

解决方案二:
Paint肯定是实时触发的,自己写个class吧,在使用时再触发绘图事件。
解决方案三:
别让窗口被其他窗口挡住,不要最大最小话,不要改变窗口内容,别点按钮什么的.不要动任何东西,Paint消息的触发就很少了.
解决方案四:
什么都不要干Paint肯定是不会触发!这是最高的"效率"'---------------------------要改效率,使用多线程吧。
解决方案五:
谢谢各位大侠倾情解疑!不胜感激之至!To:kyle315我的程序中已经自定义myClass了,也想做到你所说的"自己写个class吧,在使用时再触发绘图事件。"可惜没有实现。你的意思是说,再另写个myControl类,继承Panel,PictureBox类,然后再在myClass中引用?如何实现在使用需要时才触发绘图事件?To:akirya窗体和画面上什么都不动,显然是不可能的,有更有效的方法吗?To:pjagz多线程如何实现?可否给个范例?不好意思,总觉得有程序语句似乎直观一点

时间: 2024-10-01 02:54:50

如何让Paint事件不要频繁触发?的相关文章

js onmousewheel事件多次触发问题解决方法

 我想做一个首屏和第二屏之间滚动鼠标滚轮就可以整平切换的效果,遇到了很多问题,后来在kk的帮助下,终于解决了这个问题,甚是欢喜,于是记录一下: 我最初的代码是这样的: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8

js-触摸屏左右滑动事件,如何能触发pc键盘上的PageUp、PageDown键

问题描述 触摸屏左右滑动事件,如何能触发pc键盘上的PageUp.PageDown键 http://www.ebook.chinafeedepc.org/e.aspx?vid=16 电子杂志翻页问题,pc访问可以用PageUp.PageDown来实现翻页,如何是手机端浏览的时候,用左右触摸滑动来触发PageUp与Pagedown效果. 解决方案 这需要自定义手势,网上demo挺多的,查下就知道了 解决方案二: 看你手机端页面用的什么框架了 基本上都有触屏事件的封装 例如jQuerymobile

c# WinFrom中UserControl的OnPrint事件没有被触发问题

问题描述 c# WinFrom中UserControl的OnPrint事件没有被触发问题 已经显示的调用了Invalidate方法与Update方法.还是没有触发OnPrint事件,有人知道这个是怎么一会事情么? 解决方案 相关问题帖子 解决方案二: 你更新的控件是你想ONPRINT的控件吗,好好看看代码,这样最基本的东西,不要怀疑编译器出问题了,一般都是自己代码的问题,或者对自己的程序流程 不清楚,理解错误. 解决方案三: 你是不是用错事件了,应该用onpaint 解决方案四: 是不是函数签名

VS2010 CLR的窗口Paint事件函数怎么不执行

问题描述 VS2010 CLR的窗口Paint事件函数怎么不执行 初学者 对着书写这个简单的代码 #pragma endregion private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Pen^my=gcnew Pen(Color::Black); e->Graphics->DrawLine(my,0,0,100,100); } 本来应该画一

论坛-C# winform问题:如何在点击button的时候激活panel的paint事件

问题描述 C# winform问题:如何在点击button的时候激活panel的paint事件 如题,求大神解答,帮朋友问的,他论坛登录不了,试了一些基本的,好像还是不行 解决方案 如果paint事件已经绑定了方法,就可以直接调用这个事件 解决方案二: 可以通过路由事件来处理,了解下路由事件. 解决方案三: 可以调用panel的刷新方法,欢迎来群里一起交流,都是这方面的376034405

这个网页代码的点击事件是怎样触发的!

问题描述 这个网页代码的点击事件是怎样触发的! <li class="tb-last"> <a class="tb-tab-anchor" href="javascript:void(0);" hidefocus="true" data-spm-click="gostr=/tbdetail;locaid=d3" shortcut-key="g r" shortcut-l

随着“B2C”电子商务的迅猛发展,网络钓鱼事件愈加频繁

国家计算机病毒应急处理中心通过对互联网的监测发现,随着"B2C"电子商务的迅猛发展,网络钓鱼事件愈加频繁. 国家计算机病毒应急处理中心常务副主任张健说,钓鱼网站的生命周期比去年同期更短,多数都是跟随节假日以及热点事件应运而生.同时,对比去年同期数据,网络钓鱼类型在构成上也更加复杂,说明黑客也在根据市场的变化不断调整策略. 据了解,目前,网络钓鱼现状表现在银行类网站频遭仿冒.节假日成为钓鱼高峰期.热点事件催生网络钓鱼以及中奖信息类和彩票类钓鱼网站激增等五个方面.专家同时建议,用户应加强技

js onmousewheel事件多次触发问题解决方法_javascript技巧

我想做一个首屏和第二屏之间滚动鼠标滚轮就可以整平切换的效果,遇到了很多问题,后来在kk的帮助下,终于解决了这个问题,甚是欢喜,于是记录一下: 我最初的代码是这样的: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> div { width: 700px; height: 1000px; } .red { back

Asp.net中服务端控件事件是如何触发的

asp.net|控件     Asp.net 中在客户端触发服务端事件分为两种情况: 一.WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton 这两种按钮最终到客户端的表现形式为: <input name="Submit1" id="Submit1" type="submit" value="Submit">,这是Form表单的提交按钮,点击以