解決winform界面刷新閃爍問題的多種方案
第一:
設(shè)置初始化啟用默認(rèn)雙緩沖并提供無閃爍的圖形呈現(xiàn):
this.DoubleBuffered = true;//設(shè)置本窗體 SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景. SetStyle(ControlStyles.DoubleBuffer, true); // 雙緩沖
第二:
底層重繪每次會(huì)清除畫布,然后再全部重新繪制,這才是導(dǎo)致閃爍最主要的原因。于是重載消息發(fā)送函數(shù)操作,禁掉這條消息。
/// <summary>
/// 捕捉窗體事件
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0014) // 禁掉清除背景消息
return;
}
第三:
防止閃屏代碼
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
到此這篇關(guān)于解決winform界面刷新閃爍問題的多種方案的文章就介紹到這了,更多相關(guān)winform界面刷新閃爍內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分析C# Dictionary的實(shí)現(xiàn)原理
對(duì)于C#中的Dictionary類相信大家都不陌生,這是一個(gè)Collection(集合)類型,可以通過Key/Value(鍵值對(duì)的形式來存放數(shù)據(jù);該類最大的優(yōu)點(diǎn)就是它查找元素的時(shí)間復(fù)雜度接近O(1)。那么什么樣的設(shè)計(jì)能使得Dictionary類實(shí)現(xiàn)O(1)的時(shí)間復(fù)雜度呢2021-06-06
C#使用PDFium實(shí)現(xiàn)預(yù)覽PDF文件
這篇文章主要為大家詳細(xì)介紹了C#如何使用PDFium實(shí)現(xiàn)預(yù)覽PDF文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-10-10
利用C#編寫一個(gè)Windows服務(wù)程序的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C#編寫一個(gè)Windows服務(wù)程序,文中的實(shí)現(xiàn)方法講解詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2023-03-03
C#如何使用系統(tǒng)默認(rèn)應(yīng)用程序打開文件
本文介紹了如何使用System.Diagnostics.Process類的Start方法來打開文件,通過傳遞文件路徑作為參數(shù),系統(tǒng)會(huì)使用默認(rèn)應(yīng)用程序打開該文件,例如,如果文件擴(kuò)展名為.txt,則會(huì)使用NotePad或WordPad打開;如果擴(kuò)展名為.html,則會(huì)使用系統(tǒng)默認(rèn)瀏覽器打開2025-01-01
Unity3D實(shí)現(xiàn)NavMesh導(dǎo)航網(wǎng)格尋路
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)NavMesh導(dǎo)航網(wǎng)格尋路,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05

