Vb中如何消除MSchart的闪烁现象

发表于:2007-07-14来源:作者:点击数: 标签:
MSChart控件是用来将若干组数据以棒图、饼图、曲线图等图形方式显示出来的一种很方便、快捷的控件。但是每当数据刷新时,MSChart控件总会在屏幕上出现一种亮白色的闪烁现象,而且机器速度越慢,闪烁现象越明显。在这里提供一种用PictureBox控件解决闪烁问题
MSChart控件是用来将若干组数据以棒图、饼图、曲线图等图形方式显示出来的一种很方便、快捷的控件。但是每当数据刷新时,MSChart控件总会在屏幕上出现一种亮白色的闪烁现象,而且机器速度越慢,闪烁现象越明显。在这里提供一种用PictureBox控件解决闪烁问题的方法。

1、在有MSChart控件的窗体中另外加入一个PictureBox控件,如MSChart1和Picture1。
2、使Picture1和MSChart1大小一致,位置相同(通过左对齐和顶端对齐)。
3、使Picture1在MSChart1前端,设置Picture1的Visible为False,即不可见。只有刷新数据时Picture1才显示。
4、包括MSChart1第一次赋值和刷新数据两个过程。如下:

注释:初始化过程
Private Sub Form_load()
Dim V_char() 注释:n维数组
Dim I as Integer 注释:计数变量
Dim V_series as Integer 注释:标记几个系列的变量……
MSChart1.ChartData = V_char 注释:给MSChart1初始化赋值

For I = 1 To V_series
……
注释:必须以此方式显示图例,否则Picture控件不能显示
MSChart1.DataGrid.ColumnLabel(I, 1) = 图例
Next I

MSChart1.Backdrop.Fill.Style = VtFillStyleBrush
注释:按需要设置MSChart1的背景色,否则Picture1会显示白色
MSChart1.Backdrop.Fill.Brush.FillColor.Set 192, 192, 192
End Sub

注释:刷新数据过程
Private Sub Refresh()
Dim V_newchar() 注释:n维数组
……
Picture1.Visible = True
MSChart1.ChartData = V_newchar 注释:给MSChart1重新赋值,即刷新数据

MSChart1.EditCopy 注释:将当前图表的图片复制到剪贴板中
Picture1.Picture = Clipboard.GetData() 注释:给Picture1赋值剪贴板中的图片
End Sub

这样每一次刷新数据时Picture1显示的图片都不会产生闪烁现象

原文转自:http://www.ltesting.net