解决WinForm界面闪烁问题
前言
之前將.net 1.1 Windows Form程式升級到.net 4.0,結果在開畫面時,閃的非常利害! 於是就開始找解決方法。
研究及解決
開始找到了設定DoubleBuffer=true,這個有一點點用,在高檔的機器上面,但是在4年前的NB問題還是一樣,尤其是當畫面物件很多時,感覺是一個一個畫出來! 還是被USER噹~~
後來找到了「How to fix the flickering in User controls」,照他的方式來做,效能果然是一粒一的好呀!
他的方式是在Form及UserControl上覆寫CreateParams,程式如下,
Form上的Code
C#
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
VB
Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H2000000
' Turn on WS_EX_COMPOSITED
Return cp
End Get
End Property
UserControl的Code
C#
protected override CreateParams CreateParams {
get {
var parms = base.CreateParams;
parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
return parms;
}
}
VB
Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams
Get
Dim parms As System.Windows.Forms.CreateParams = MyBase.CreateParams
'Turn off WS_CLIPCHILDREN
parms.Style = (parms.Style And (Not &H2000000))
Return parms
End Get
End Property
運作狀況:
1.在XP機器上,Border不會顯示出來!
2.只要在Form上加入 Or &H2000000即可有效果,UserControl可不需加入那一段Code!
3.如果Form上沒有加入 Or &H2000000,而UserControl有加入 And (Not &H2000000)的話,畫面上的Label會有顯示不出來的狀況!
參考資料:How to fix the flickering in User controls
http://www.dotblogs.com.tw/rainmaker/archive/2012/02/22/69811.aspx
解决WinForm界面闪烁问题的更多相关文章
- 多线程、委托、Invoke解决winform界面卡死的问题,并带开关
一.知识点介绍 1,更新控件的内容,应该调用控件的Invoke方法. Invoke指: 在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托.该方法接收一个委托类型和委托的参数,因此需要定义 ...
- 解决 winform 界面对不齐 z
一个winform的程序,本机上界面对得很齐,到一到客户的机器上就惨不忍睹,一番研究后搞定: 1. AutoScaleMode = None 2. BackgroundImageLayout = No ...
- 解决winform窗体闪烁问题
如果你在Form中绘图的话,不论是不是采用的双缓存,都会看到图片在更新的时候都会不断地闪烁,解决方法就是在这个窗体的构造函数中增加以下三行代码: 请在构造函数里面底下加上如下几行: SetStyle( ...
- 解决 winform 界面对不齐
最近做了一个winform的程序,本机上界面对得很齐,到一到客户的机器上就惨不忍睹,一番研究后搞定: 1. AutoScaleMode = None 2. BackgroundImageLayout ...
- C# Winform频繁刷新导致界面闪烁解决方法
C#Winform频繁刷新导致界面闪烁解决方法 一.通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲) 对于大多数应用程序,.NET Framework 提供的默认双缓冲将 ...
- winform频繁刷新导致界面闪烁解决方法
转自龙心文 原文 winform频繁刷新导致界面闪烁解决方法 一.通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲) 对于大多数应用程序,.NET Framework 提供 ...
- winform界面特效470多例
一共470多例winform 界面特效的源码. 实例030 窗口颜色的渐变 实例说明 在程序设计时,可以通过设置窗体的BackColor属性来改变窗口的背景颜色.但是这个属性改变后整个窗体的客户区都会 ...
- NanUI for Winform发布,让Winform界面设计拥有无限可能
如今,尽管WPF.UWP大行其道,大有把Winform打残干废的趋势.但是还是有那么一波顽固不化的老家伙们固守着Winform,其中就包括我. 好吧,既然都说Winform做得软件不如WPF界面美观效 ...
- (VC)解决绘图时闪烁问题的一点经验[转]
转自:http://www.cnblogs.com/lidabo/p/3429862.html 清除屏幕闪烁 (转自网上) <一> 由于作图过于复杂和频繁,所以时常出现闪烁的情况,一些防止 ...
随机推荐
- MYSQL复习笔记12-视图
Date: 20140223Auth: Jin参考:http://blog.sina.com.cn/s/blog_436732df0100e768.html 一.介绍1.概念视图是从一个或几个基本表( ...
- fmri数据分析图像格式及转换问题——基于spm讨论
1.几大常用格式 这张ppt介绍了现在常用的三种格式:dicom主要由扫描器产生,一般是一个slice一个文件:analyze 格式= .img/.hdr spm下用的最多:nifti ,由fsl & ...
- 剖析ASP.NET Core(Part 3)- UseMvc(译)
原文:https://www.stevejgordon.co.uk/asp-net-core-anatomy-part-3-addmvc 发布于:2017年4月环境:ASP.NET Core 1.1 ...
- iOS:2015年07月最新苹果IOS上架App Store商店步骤
苹果官方在2015年05-06月开发者中心进行了改版,网上的APP Store上架大部分都不一样了,自己研究总结一下,一个最新的上架教程以备后用. 原文地址:http://www.16css.com/ ...
- linux下使用C++ Json库
安装Json库 1.下载JsonCpphttp://sourceforge.net/projects/jsoncpp/files/ 2.下载sconshttp://sourceforge.net/pr ...
- iconv的安装和使用
一.Linux下iconv的安装包的下载页面http://www.gnu.org/software/libiconv/ $ ./configure --prefix=/usr/local$ make$ ...
- unity linear work flow
看了下unity linear space的工作流 srgb read tex deferred gbuffer01 srgb rt float rt----pps float rt 最后 blit ...
- Linux 调度器发展简述
引言 进程调度是操作系统的核心功能.调度器只是是调度过程中的一部分,进程调度是非常复杂的过程,需要多个系统协同工作完成.本文所关注的仅为调度器,它的主要工作是在所有 RUNNING 进程中选择最合适的 ...
- VMware安装报VT-x未开启的解决办法
摘自: http://www.bloomylife.com/?p=650 前段时间MSDN上放出WIN8最终版的ISO文件,心里一直痒痒.最近闲来无事,想体验下WIN8的魅力.考虑到新系统刚面世,在驱 ...
- 用好Git 和 SVN,轻松驾驭版本管理
用好Git 和 SVN,轻松驾驭版本管理 本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始使用 Git,并总结平时工作高频率使用到的 Git 常用命令. 一.Git vs S ...