C# 解决窗体闪烁】的更多相关文章

C# 解决窗体闪烁 在Windows窗体上造成“闪烁”的窗体上有很多控制.造成这种闪烁的原因有两个: 1.当控件需要被绘制时,Windows发送一个控件两个消息.第一个(WM_ERASEBKGND)导致背景被绘制(OnPaintBackground),第二个导致前景被绘(WM_PAINT,射击OnPaint).首先看到背景,然后当绘图缓慢时前景变得明显.Windows窗体使用ControlStyles.OptimizedDoubleBuffer为这种闪烁提供了一个现成的解决方案. 2.有很多控件…
解决窗体闪烁问题 具体代码: 1.在声明窗体类时加入:   private     procedure CreateParams(var Params: TCreateParams); override; 2.在窗体实现部分加入:   procedure TFrm_Main.CreateParams(var Params: TCreateParams);   begin     inherited;     Params.ExStyle := 33554432; //0x 02 00 00 00…
/// 解决mdi窗体闪烁的问题 /// </summary> protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } } 在父winform的代码页中加入这段代码即可.…
转自:http://www.cnblogs.com/smartls/archive/2011/04/08/2008981.html#2457370   引言 在之前的<创建无阻塞的异步调用>中,已经介绍过异步调用的编写步骤和实施原理.异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能.可伸缩应用程序的关键.在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作.我们通常使用异步完成许多计算型.IO型的复杂.耗时操作,去取得我们的应用程序运行所需要的一部分数据.在…
异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能.可伸缩应用程序的关键.在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作.我们通常使用异步完成许多计算型.IO型的复杂.耗时操作,去取得我们的应用程序运行所需要的一部分数据.在取得这些数据后,我们需要将它们绑定在UI中呈现.当数据量偏大时,我们会发现窗体变成了空白面板.此时如果用鼠标点击,窗体标题将会出现”失去响应”的字样,而实际上UI线程仍在工作着,这对用户来说是一种极度糟糕的体验.如果你希望了解其中的原因…
public frmMain() { InitializeComponent(); //解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题 int x = Convert.ToInt32((Screen.PrimaryScreen.WorkingArea.Width - this.Width) * 0.5); int y = Convert.ToInt32((Screen.PrimaryScreen.WorkingArea.Height - this.Height) * 0.5); t…
http://blog.sina.com.cn/s/blog_402c071e0102x4rl.html    以下内容,对于想要使用C#实现PNG图片背景透明显示,同时动态显示时无闪烁问题的人来说,是非常有帮助的.网络上很难找到完整的解决方案.以下是我搜集到,并加以验证过的完整解决方案. 文章一: <How to Use Transparent Images and Labels in Windows Forms> <在Windows Forms 中怎样使用透明图片和透明标签>…
delphi实现窗体闪烁功能 以前做窗口闪动时都没有考虑到让任务栏上的按钮闪动的问题, 现在一个客户需要任务栏按钮闪动,发现以前使用的flashwindow不能达到要求了, 查找了一下,找到flashwindowex这个API 如果您创建的应用程序是运行在Windows 98或更高版本操作系统上,您可以通过调用API函数FlashWindowEx并赋给它一个FlashWInfo结构体来实现. 而如果是运行在Windows 95上则比较麻烦, 但您也可以通过使用一个Timer组件来实现想要的效果.…
如果你在Form中绘图的话,不论是不是采用的双缓存,都会看到图片在更新的时候都会不断地闪烁,解决方法就是在这个窗体的构造函数中增加以下三行代码: 请在构造函数里面底下加上如下几行: SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景. SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲 参数说明…
在主窗体中任意位置加上下面的代码即可 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } }…
转自 MFC绘图不闪烁——双缓冲技术[转] 在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃. 所谓双缓冲技术,下面是百度百科的解释: 我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到.现在,我需要创建一个虚拟的.看不见但是可以在上面画图(比如说画点.线)的OSD层,我称之为offscreen(后台缓冲区).这个offscreen存在于内存中,我们在上面画图,这个offscreen上面的东…
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期. 一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的. 这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个刷新周期内完成,那么给人的视觉感受就是,先看…
一.挖空原理说明 subtract 用墙面减去与门重叠的部分,产生一个新的对象,导入材质安装门即可 //参与减去几何体 //平行于x轴门 var meshH4Door = new ThreeBSP( meshHDoor ); //平行x轴横墙面 var meshWall4 = new ThreeBSP( meshH4 ); //平行x轴横墙面meshWall4对象 减去与meshH4Door门重叠部分 var subtract_bsp = meshWall4.subtract( meshH4Do…
protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED if (this.IsXpOr2003 == true) { cp.ExStyle |= 0x00080000; // Turn on WS_EX_LAYERED this.Opacity = 1; } retu…
一.问题来源: 接触Openlayers 一段时间了,最近做了一个农业产业系统,项目中涉及到产业图例,最后考虑用canvas来绘制图例图像.当中带图片的图例移动时,图片会实现闪烁留白情况.闪烁是因为绘制图片本身的复杂性,导致canvas绘制频率和浏览器绘制频率不同步,出现图片出不来或者延迟出现,这过程中间就出现了空白显示为canvas底图颜色白色的情况.这里说的闪烁是,在单击地图移动图例时,文字前面的图片并没有出来.但是单击地图准备移动图例时别松开鼠标图片能出来,这个有点奇怪.... 有些解决方…
举例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> /*[ng-cloak] 属性选择器 匹配所有包含这个属性的元素*/ .ng-cloak, [ng-cloak] { display: none; } </style> <…
最近做中国象棋,绘制界面时遇到些问题,绘图过程中屏幕闪烁,估计都会想到利用双缓冲来解决问题,但查了下网上双缓冲的资料,发现基本是MFC的,转化为VC++后,大概代码如下: void DrawBmp(HDC hDC, HBITMAP hBitmap) { HDC hdcMEM; //用于缓冲作图的内存DC HBITMAP bmp; //内存中承载临时图象的位图 HANDLE hOld; hdcMEM = CreateCompatibleDC(hDC);//依附窗口DC创建兼容内存DC bmp =…
在构造函数里加上以下代码: this.DoubleBuffered = true;//设置本窗体            SetStyle(ControlStyles.UserPaint, true);            SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.            SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲            //…
watch: { //监听表格数据的变化[使用 watch+nextTick 可以完成页面数据监听的 不会出现闪烁] tableData: { //深度监听,可监听到对象.数组的变化 handler(val, oldVal) { this.$nextTick(function() { var that = this; var thisSelTreeData = that.tableSelTreeData; for(var j = 0; j < thisSelTreeData.length; j+…
// 网页闪烁问题    if ([self.webView.realWebView isKindOfClass:[WKWebView class]]) {         ((WKWebView *) self.webView.realWebView).allowsBackForwardNavigationGestures = NO;     } …
在父窗体随意为之添加 protected override CreateParams CreateParams { get { XtraForm xa = _App.Framework.MainForm; xa. CreateParams cp = xa.CreateParams; cp.ExStyle |= 0x02000000; return cp; } }…
开启深度测试后OpenGL就不会再去绘制模型被遮挡的部分,这样实现的显示画面更为真实,但是由于深度缓冲区精度的限制,对于深度相差非常小的情况(例如在同一平面上进行两次绘制),OpenGL就不能正确判定两者的深度值,会导致深度测试的结果不可预测,显示出来的现象时交错闪烁的前后两个画面,这种情况称为z-fighting. 在旋转(深度值发生变化)的情况下表现的更为明显,如下图所示:     应对这种情况的办法是使用glPolygonOffset给当前绘制对象设置一个深度偏移,函数原型是: void…
准备: [DllImport("user32.dll")] static extern bool FlashWindowEx(ref FLASHWINFO pwfi); [DllImport("user32.dll")] static extern bool FlashWindow(IntPtr handle, bool invert); [StructLayout(LayoutKind.Sequential)] public struct FLASHWINFO {…
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { CheckForIllegalCrossThreadCalls = false; this.label1.Text = "aaaaa"; Thread tr = new Thread(testc); tr.Start()…
http://blog.csdn.net/config_man/article/details/25578767 #region 调用timer控件实时查询开关机时间 private void timer1_Tick(object sender, EventArgs e) { string sql = "SELECT startTime,endTime,AMTusername,AMTpassword,AMTip FROM AmtTiming at, AmtComputer ac WHERE at…
this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea; 在初始话后添加这个即可实现,...............…
添加缓冲: private void SetDoubleBuffer() { base.SetStyle( ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.Selectable | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.SupportsTransparentBackCo…
tableLayoutPanel.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic) .SetValue(tableLayoutPanel, true, null);…
同样是,重绘边框事件,win7系统显示正常,而xp系统却不显示,这是什么原因造成的呢? 于是,小编开始百度,不停的查找原因,通过一番查找,小编也意外的收获了一些内容: 例如:窗口的拖动,放大,缩小,等,都会重新触发paint重绘事件.那么,什么原因会影响重绘的不显示呢? 最后发现,页面上重写的CreateParams方法(原本是为了解决窗体闪烁的问题),影响了重绘边框的显示.…
private void Form1_Load(object sender, EventArgs e) { //在窗体加载的时候 解决窗体闪烁问题 //将图像绘制到缓冲区减少闪烁 this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true); }…