请问,如何让窗体重绘时,不发抖
如何让窗体重绘时,不发抖,静静地、悄悄滴....重绘 --------------------编程问答-------------------- 发抖。静静地,悄悄地。。。你用词好逗啊
使用双缓冲吧,好多人说双缓冲可以解决这个问题,可我就是没用过
--------------------编程问答-------------------- 顶顶嗬嗬嗬嗬 --------------------编程问答--------------------
--------------------编程问答-------------------- 我也在想如何使用双缓存的问题:有段代码 lz看看
如何:双缓冲窗体以减少闪烁
Visual C# 语言概念
如何:双缓冲窗体以减少闪烁 (Visual C#)
本示例演示如何使用双缓冲来减少闪烁。如果刷新包含多个控件的窗体,所有单个控件在被重绘时可能会产生闪烁效果。若要减弱这种效果,请对窗体应用 ControlStyles,如以下所示。
示例
this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint , true);
public class panGame : Panel
{
public void pGame()
{
//Set the value of the double-buffering style bits to true.
SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
false);
this.UpdateStyles();
}
}
双缓存可以避免GDI+绘制图像的闪烁等等一些问题。。 --------------------编程问答-------------------- 哎,本人的位运算也没学,"|"符号是啥意思啊?
能不能举个例子,我先照搬用上再说,就举个Panel1重绘的例子吧,谢谢了!!! --------------------编程问答--------------------
改成
SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
放在构造函数里 --------------------编程问答-------------------- |用来合并选项的,这样SetStyle一个参数就可以设几个选项了
--------------------编程问答-------------------- 重绘开始前BeginUpdate(). 重绘结束时 EndUpdate() .
这样在 EndUpdate()时才重绘,可以有效减少闪烁。 --------------------编程问答--------------------
哎!!!
panel1.Invalidate();
还是闪得厉害 --------------------编程问答-------------------- 还是你那边写的不对吧,双缓冲的原理是,所有的绘制都是绘制在内存里,然后所有的绘制结束后才会将结果放到界面上,不会出现闪烁
--------------------编程问答-------------------- 请问该怎么写? --------------------编程问答--------------------
LZ好厉害 --------------------编程问答-------------------- 发抖是因为你太频繁了 --------------------编程问答--------------------
不频繁啊,就是调用 panel1.Invalidate();方法 --------------------编程问答-------------------- 学习! --------------------编程问答-------------------- 没用过,学习 --------------------编程问答-------------------- 在哪调用的Invalidate方法?Invalidate会引发刷新的,不会频繁调用。 --------------------编程问答-------------------- 对于panel更是没必要频繁调用Invalidate,一般只在大小变化等事件中,由控件自己触发,也不用自己显示调用。 --------------------编程问答-------------------- 呵呵,帮顶 --------------------编程问答--------------------
我是在Panel1中画图,如果不panel1.Invalidate,新画的图,怎么能显示呢?需要主动重绘啊 --------------------编程问答-------------------- 嵌套一个picbox再画图吧。你这样刷透明背景的东西,当然往死了抖动。 --------------------编程问答-------------------- this.panel1.CreateGraphics().DrawImage(_bmp, 0, 0); --------------------编程问答--------------------
这是啥意思,起何作用,请问? --------------------编程问答-------------------- http://topic.csdn.net/u/20110424/15/ee9f8d1f-989f-468d-b034-24376d733d52.html我以前问别人的帖子 --------------------编程问答-------------------- 使用双缓冲
但是要注意,如果不需要重绘制的地方,就不要绘制,绘制的东西太多,而且太频繁,即使使用了双缓冲,也是会抖的 --------------------编程问答--------------------
双缓冲,我不会啊 --------------------编程问答--------------------
--------------------编程问答-------------------- 别吓唬她,她就不发抖了。跟她说悄悄话,她就跟你好了。 --------------------编程问答-------------------- --------------------编程问答--------------------
SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
是不是在构造函数里面写:
pane11.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
--------------------编程问答-------------------- 鹅鹅鹅 --------------------编程问答-------------------- 等待答案 --------------------编程问答-------------------- 等待答案 --------------------编程问答-------------------- 控件是属性里DoubleBuffered设置为true --------------------编程问答-------------------- 请教大师,到底如何使用双缓冲,防止重绘发抖 --------------------编程问答-------------------- 有大师能给说下啥叫双缓存么???看了好多这样的贴,还是不懂,什么是双缓存~~ --------------------编程问答-------------------- 说句实话,对于控件比较多的窗体,使用了 双缓存 也是抖的。
即使你不吓唬她 --------------------编程问答--------------------
是吗?我的图上有几百个label,不过宽度为1,像一条线,这样的图,双缓冲,也要抖? --------------------编程问答-------------------- 学习了。。 --------------------编程问答--------------------
等待答案 --------------------编程问答-------------------- --------------------编程问答-------------------- 扯淡的多,真正的回答正题的少。 --------------------编程问答--------------------
就是
补充:.NET技术 , C#