请教控件重刷的问题

Mittermeyer 2003-11-27 11:40:04
最近发现一个问题,一个包含控件的HTML页面,如果页面中的任何一个元素内容发生变化(无论是否和那个控件在一个Frame中),都会引起控件的重刷。
在我的应用程序中,页面上有一个秒表,每秒刷新一次,显示当前时间。而在这个页面中另外包含一个控件,由此造成了控件频繁被刷新,闪烁十分严重,已经影响到正常的使用。这样的问题有什么办法解决?

以前在VB下控件有一个AutoRedraw的属性,提高重刷的效率,大概原理应该是控件内部建立了一个DC,每一次变化是在内部的DC上先绘制,然后把整个DC的内容绘制到控件当前DC上。
DotNet下有什么类似的方便的机制,或者有什么更加有效的方法解决控件频繁刷新,闪烁的问题。

谢谢!期待各位的回复。

...全文
25 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
维她奶 2003-11-28
  • 打赏
  • 举报
回复
up
HanYZ 2003-11-27
  • 打赏
  • 举报
回复
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
SetStyle(ControlStyles.UserPaint,true);
SetStyle(ControlStyles.AllPaintingInWmPaint,true);
SetStyle(ControlStyles.DoubleBuffer,true);
SetStyle(ControlStyles.ResizeRedraw, true);
juqiang 2003-11-27
  • 打赏
  • 举报
回复
.net下是一样的。

首先在你控件的构造方法中,加入这么一段:
this.SuspendLayout();
this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true);
this.UpdateStyles();

然后在你的paint中,加入这么一段:
Bitmap bmp = new Bitmap(1024,768);
Graphics g = Graphics.FromImage(bmp);
从下面开始,你的paint代码都用这个g来做。做好了之后,在最后写上:
gg.DrawImage(bmp,0,0);

这样重画过程中闪烁的现象就少多了,基本上没有。。。
skyren 2003-11-27
  • 打赏
  • 举报
回复
up

你使着清理掉缓存看看如何?
Mittermeyer 2003-11-27
  • 打赏
  • 举报
回复
补充一下,我指的不是WebControl或者HTML Control,而是C#编写的ActiveX Control。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧