亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#控件的閃爍問題解決方法總結

2019-11-17 03:36:34
字體:
來源:轉載
供稿:網友

最近對代碼作了一些優化,試驗后效果還可以,但是發現界面會閃爍,具體是TreeView控件會閃爍,語言為C#,IDE為VS2005。在查閱一些資料,使用了一些基本技術后(如開啟雙緩沖),發現沒什么效果。

        于是使用PRofiler工具,查找出瓶頸在于每次更新完界面的EndUpdate操作(使用這個是為了減少界面更新次數,但這里不理想是因為控件中中的元素很多),猜想大概每次更新,.Net底層都會更新重繪每個圖元,所以速度會慢,造成閃爍。但是如果這樣,使用雙緩沖應該會有較好效果。再看代碼,發現可能是更新動作太過頻繁,于是降低速度,有所好轉,但還是不行。

       繼續在網上查閱,最終找到一個方案比較合適。原來底層重繪每次會清除畫布,然后再全部重新繪制,這才是導致閃爍最主要的原因。于是重載消息發送函數操作,禁掉這條消息。代碼如下:

        protected override void WndProc(ref Message m)

        {

            if (m.Msg == 0x0014) // 禁掉清除背景消息

                return;

            base.WndProc(ref m);

        }

        成功!

注:雙緩沖還是有用的,在更新不是很頻繁且控件內含元素不是特別多的時候。一旦元素過多,每次更新時間都比較長,即便使用了雙緩沖,仍解決不了閃爍問題。個人認為最終比較理想的方法還是禁掉清除背景消息。

附:一些嘗試過但失敗的記錄

1)使用setStyle

      網上有說使用setStyle函數去設置該控件的參數,具體為:

      SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);

      這三個選項參數后者是依賴前者的,必須并存,否則無效。并且這個函數本身是protected的,所以首先需要繼承某控件再使用。

      這個目標是跟前面正確解決方案一致,也是禁止清除背景并開啟雙緩沖,但需要使用用戶繪制選項,而且是全部交由用戶繪制。這需要自己實現控件的全部繪制,比較麻煩。所以這個方法不是完全不可行,但是需要額外工作量,不推薦。我也沒有使用。

2)使用BeginUpdate和EndUpdate

      這一對操作對于需要批量操作更新控件的情景有比較好的效果,比如初始化時批量添加了大量節點。壞處就在于不能即時更新。所以,對于頻繁的更新節點并希望立即反映到界面的情況不適用。如果使用并且沒有禁掉清除界面消息的話,則控件看起來就會不停的閃爍,而且以白底為主,內容幾乎不可見(這個視頻繁程度而定)。因為界面更新都在EndUpdate處完成,操作太多導致EndUpdate阻塞時間過長,且清空在先,更新在后,導致界面看起來長時間處于空白狀態。

3)使用ControlStyles.EnableNotifyMessage選項

      這個選項的作用和正確解決方案也是一致的。使用方法是:

      SetStyle(ControlStyles.EnableNotifyMessage, true);

      protected override void onNotifyMessage(Message m)

      {

               // 此處書寫過濾消息代碼

      }

      但是實際實驗顯示無效果,不知是什么原因,沒有細究。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一精品电影| 成人中文字幕+乱码+中文字幕| 国精产品一区一区三区有限在线| 在线免费观看羞羞视频一区二区| 中文字幕日韩电影| 亚洲欧美中文日韩在线v日本| 九九热最新视频//这里只有精品| 欧美高清视频免费观看| 91久久久久久久久久久| 亚洲综合成人婷婷小说| 97在线免费观看视频| 日韩欧美国产免费播放| 午夜精品久久久久久久白皮肤| 亚洲摸下面视频| 亚洲欧美日韩另类| 国产亚洲精品美女久久久| 亚洲国产又黄又爽女人高潮的| 亚洲精品视频网上网址在线观看| 亚洲黄色av女优在线观看| 91超碰中文字幕久久精品| 九九热最新视频//这里只有精品| 亚洲综合精品伊人久久| 成人av色在线观看| 色噜噜狠狠狠综合曰曰曰88av| 久久精品国产91精品亚洲| 成人网在线免费观看| 国产精品久久久久91| 久久99视频精品| 日韩在线精品一区| 456亚洲影院| 久久免费福利视频| 性欧美暴力猛交69hd| 欧美日韩亚洲一区二区三区| 久久久久中文字幕| 日韩中文娱乐网| 国产精品久久久久91| 97在线免费观看视频| 色视频www在线播放国产成人| 日韩成人在线播放| 成人福利网站在线观看11| 全色精品综合影院| 日韩av在线直播| 久久国产一区二区三区| 欧美重口另类videos人妖| 国产精品一区二区三区久久久| 欧美大片在线免费观看| 在线视频国产日韩| 久久久久久97| 久久久www成人免费精品张筱雨| 性欧美长视频免费观看不卡| 久久精品在线播放| 亚洲欧美日韩第一区| 亚洲国产精品久久久久秋霞不卡| 亚洲精品99久久久久| 日本高清+成人网在线观看| 91精品久久久久久久久不口人| 亚洲欧洲第一视频| 成人乱人伦精品视频在线观看| 丝袜一区二区三区| 欧美日韩福利在线观看| 欧美大肥婆大肥bbbbb| 国产综合在线观看视频| 亚洲精品aⅴ中文字幕乱码| 欧美激情视频免费观看| 亚洲aa中文字幕| 久久成人精品电影| 国产精品视频久久久久| 欧美一级大胆视频| 精品成人在线视频| 亚洲性夜色噜噜噜7777| 亚洲第一区中文99精品| 欧美性猛交xxxx免费看久久久| 欧美激情第99页| 欧美性受xxxx黑人猛交| 成年无码av片在线| 九九综合九九综合| 欧美日韩国产精品一区二区三区四区| 亚洲激情在线观看| 97国产suv精品一区二区62| 国产精品入口夜色视频大尺度| 欧美巨大黑人极品精男| 亚洲国产精品久久久| 国产成+人+综合+亚洲欧美丁香花| 国产精品久久久久久婷婷天堂| 国产精品99久久久久久久久| 亚洲欧美制服第一页| 丝袜亚洲欧美日韩综合| 亚洲xxxx妇黄裸体| 精品视频—区二区三区免费| 欧美电影《睫毛膏》| 日韩有码视频在线| 精品呦交小u女在线| 日韩免费中文字幕| 欧美大片免费观看在线观看网站推荐| 91久久精品国产| 日韩视频―中文字幕| 亚洲国产精品久久久久久| 亚洲精品午夜精品| 成人国产精品一区| 国产精自产拍久久久久久蜜| 亚洲人成自拍网站| 欧美国产精品人人做人人爱| 成人做爰www免费看视频网站| 国产成人综合精品在线| 亚洲女性裸体视频| 国产成人一区二区三区电影| 欧美性极品少妇精品网站| 亚洲国产精品久久精品怡红院| 91精品国产综合久久香蕉| 色综合天天综合网国产成人网| 亚洲第一综合天堂另类专| 97福利一区二区| 亚洲精品国产精品国自产在线| 97在线免费视频| 91大神福利视频在线| 亚洲自拍偷拍色图| 成人免费网视频| 国产精品1区2区在线观看| 久久亚洲精品视频| 欧美国产精品人人做人人爱| 国产欧美日韩中文| 亚洲欧美日韩国产精品| 亚洲视频日韩精品| 日韩欧美在线视频| 亚洲欧美一区二区三区久久| 欧美成人免费一级人片100| 这里精品视频免费| 国产一区二区三区精品久久久| 欧洲成人免费aa| 久久久久九九九九| 91影院在线免费观看视频| 91精品国产色综合久久不卡98| 亚洲国产精品悠悠久久琪琪| 欧美成人精品在线观看| 大伊人狠狠躁夜夜躁av一区| 日韩中文字幕第一页| 久久夜色精品国产| 欧美激情区在线播放| 97超级碰碰人国产在线观看| 欧美午夜美女看片| 日韩美女视频免费在线观看| 国产一区红桃视频| 欧美综合一区第一页| 亚洲日本中文字幕| 91sao在线观看国产| 91po在线观看91精品国产性色| 国产精品免费福利| 亚洲最大成人在线| 国产啪精品视频| 国产精品久久久久免费a∨大胸| 久久视频在线直播| 国产亚洲视频在线| 欧美日韩国产一区中文午夜| 亚洲欧美日韩区| 欧美日韩视频免费播放| 尤物九九久久国产精品的特点| 成人中文字幕在线观看| 精品亚洲精品福利线在观看| 国产一区二区三区视频在线观看| 欧美日韩高清区| 亚洲毛片一区二区| 国产成人精品优优av| 日韩在线国产精品| 日韩亚洲国产中文字幕|