关键是如何建立一个新的Graphics实力,或者其他可以绘图的对象,好画上。也没有发现有人说的doublebuffer的属性开关。
8 个解决方案
#1
双缓冲的实现,与PC 上是一样一样的
#2
我查找到部分API,建立一个Image,在Image上绘图。然后把Image会知道Paint()里面。
发下在没有Onpaint调用之前,系统都会自动吧背景刷黑。这样不管我用什么方法,在每次绘图前都要变黑一下,效果很不好。
#3
Bitmap bmp;
Graphics backGroundGraph;
bmp = new Bitmap( this.ClientSize.Width, this.ClientSize.Height );
backGroundGraph.Clear( Color.Black );
showAsBar( backGroundGraph ); // My render function
private void OnPaint ( object sender, PaintEventArgs e ) {
if (bmp != null) {
e.Graphics.DrawImage( bmp, 0, 0 );
}
//base.OnPaint( e );
}
#4
前面代码,是在其他函数里面,我拷贝出来的。
Opaint只用来刷新这个背景图片。
我单步调试发现:在进去Onpaint之前,系统会自动把系统显存清理成黑色;之后我在绘制。最终效果就是黑色纯色,和我画的图片非常快的交替显示。
有方方法取消这个清空显存吗?
Opaint只用来刷新这个背景图片。
我单步调试发现:在进去Onpaint之前,系统会自动把系统显存清理成黑色;之后我在绘制。最终效果就是黑色纯色,和我画的图片非常快的交替显示。
有方方法取消这个清空显存吗?
#5
处理一下 WM_ERASEBACKGROUD 这个消息
#6
有点感觉,但是还不太明白。初次接触C#,以前也很少做桌面程序。
我看VS2008 自动GUI里面,是吧OnPaint注册为一个HANDULER,你说的这个也类似吧?
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler( this.OnPaint );
我找遍了,里面的handleer,没有发现相似的。有例子吗?
#7
虽然没有直接答案,版主给了足够提示,着了好几个小时才找到对应的方法。
#8
背景重绘好像是在OnPaintBackground里,我的控件闪烁问题重载OnPainBackground后就不闪烁了
#1
双缓冲的实现,与PC 上是一样一样的
#2
双缓冲的实现,与PC 上是一样一样的
我查找到部分API,建立一个Image,在Image上绘图。然后把Image会知道Paint()里面。
发下在没有Onpaint调用之前,系统都会自动吧背景刷黑。这样不管我用什么方法,在每次绘图前都要变黑一下,效果很不好。
#3
Bitmap bmp;
Graphics backGroundGraph;
bmp = new Bitmap( this.ClientSize.Width, this.ClientSize.Height );
backGroundGraph.Clear( Color.Black );
showAsBar( backGroundGraph ); // My render function
private void OnPaint ( object sender, PaintEventArgs e ) {
if (bmp != null) {
e.Graphics.DrawImage( bmp, 0, 0 );
}
//base.OnPaint( e );
}
#4
前面代码,是在其他函数里面,我拷贝出来的。
Opaint只用来刷新这个背景图片。
我单步调试发现:在进去Onpaint之前,系统会自动把系统显存清理成黑色;之后我在绘制。最终效果就是黑色纯色,和我画的图片非常快的交替显示。
有方方法取消这个清空显存吗?
Opaint只用来刷新这个背景图片。
我单步调试发现:在进去Onpaint之前,系统会自动把系统显存清理成黑色;之后我在绘制。最终效果就是黑色纯色,和我画的图片非常快的交替显示。
有方方法取消这个清空显存吗?
#5
前面代码,是在其他函数里面,我拷贝出来的。
Opaint只用来刷新这个背景图片。
我单步调试发现:在进去Onpaint之前,系统会自动把系统显存清理成黑色;之后我在绘制。最终效果就是黑色纯色,和我画的图片非常快的交替显示。
有方方法取消这个清空显存吗?
处理一下 WM_ERASEBACKGROUD 这个消息
#6
前面代码,是在其他函数里面,我拷贝出来的。
Opaint只用来刷新这个背景图片。
我单步调试发现:在进去Onpaint之前,系统会自动把系统显存清理成黑色;之后我在绘制。最终效果就是黑色纯色,和我画的图片非常快的交替显示。
有方方法取消这个清空显存吗?
处理一下 WM_ERASEBACKGROUD 这个消息
有点感觉,但是还不太明白。初次接触C#,以前也很少做桌面程序。
我看VS2008 自动GUI里面,是吧OnPaint注册为一个HANDULER,你说的这个也类似吧?
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler( this.OnPaint );
我找遍了,里面的handleer,没有发现相似的。有例子吗?
#7
虽然没有直接答案,版主给了足够提示,着了好几个小时才找到对应的方法。
#8
背景重绘好像是在OnPaintBackground里,我的控件闪烁问题重载OnPainBackground后就不闪烁了