用MSChart做一个数据显示的程序,大约是这样的,每隔一段时间采一个数据,然后像示波器那样来显示数据。大概看一下程序吧,把MSChart的Init的那部分程序省略掉了,只列出每来一个数据时的更新过程。

// 数据更新

for (int j=0;j

{

data[j] = data[j+1];

}

data[DATAPOINTS-1] = temp;

// 更新显示

m_Chart.SetRedraw(false);

m_Chart.SetRow(1);

for(int

i=1;i<=DATAPOINTS;i++)

{

m_Chart.GetDataGrid().SetData(i,1,data[i-1],0);

}

m_Chart.SetRedraw(TRUE);

这样的显示有点问题,就是在显示的时候图像会闪烁。这个做过快速显示的人应该都明白,以前也做过快速显示的事情,解决的办法是双缓冲画图,受这个的影响,采用了同样的处理方法。大致的思路是,创建一个跟MSChart控件位置相同的Picture控件,设成不可见,在进行更新时,把picture控件提到最顶层设为可见,把MSChart的内容复制的系统粘贴板,然后再一次性显示到Picture控件上。需要注意的是第一次必须把图显示出来才能进行复制,第一次就用上面的代码做显示,而以后每次就采用粘贴板复制的方式进行更新,看代码吧,数据更新同上不写了。

// 更新显示

HANDLE hDib;

m_Picture.BringWindowToTop(); //

m_Picture是与Picture控件关联的控制型变量

m_Picture.ShowWindow(SW_SHOW);

CDC *pDC =

GetDlgItem(IDC_PICTURE)->GetDC();

m_Chart.SetRow(1);

for(int

i=1;i<=DATAPOINTS;i++)

{

m_Chart.GetDataGrid().SetData(i,1,data[i-1],0);

}

m_Chart.EditCopy(); //

复制到系统粘贴板

if(OpenClipboard())

{

hDib =

GetClipboardData(CF_DIB); CloseClipboard();

}

BITMAPINFO* pbi =

(BITMAPINFO*)GlobalLock(hDib);

if (pbi != NULL)

{

BYTE* data =

(BYTE*)(pbi->bmiColors);

if

(pbi->bmiHeader.biBitCount <=

8)

{

int nColor =

(pbi->bmiHeader.biClrUsed==0) ?

1<bmiHeader.biBitCount)

: pbi->bmiHeader.biClrUsed; //

nColor颜色表中的颜色数

data +=

sizeof(RGBQUAD) *nColor;

}

StretchDIBits(pDC->GetSafeHdc(),1,1,

pbi->bmiHeader.biWidth-1,

pbi->bmiHeader.biHeight-1,0,

0, pbi->bmiHeader.biWidth,

pbi->bmiHeader.biHeight,

data, pbi, DIB_RGB_COLORS, SRCCOPY);//

显示,我为了保留外面的方框,前面宽度和高度都减了1

GlobalUnlock(hDib);

}

pDC->DeleteDC();

就是这样做。但这样的做法有点不好就是,这样相当于你显示的是一幅图像,而MSChart所具有的很多强大的交互功能就都没有了。另外还有就是鼠标仍然在闪烁,怎么解决鼠标闪烁的问题我还没想好。

mschart走势图 vc_[VC] 解决MSChart闪烁的问题相关推荐

  1. mschart走势图 vc_问题:MSChart.exe;结果:微软图表控件MsChart使用方法及各种插件下载地址...

    昨天在网上看到了微软发布了.NET 3.5框架下的图表控件,第一时间抓下来看了一下,发觉功能很强劲,基本上能想到的图表都可以使用它绘制出来,给图形统计和报表图形显示提供了很好的解决办法,同时支持Web ...

  2. mschart走势图 vc_MSChart使用小结,MS图表

    微软自带Chart控件的使用小结 1.安装: 1)如果是.Net3.5,请先安装"\图片控件 .net3.5版\MSChart.exe": 2)如果是.Net4.0及以上的,控件已 ...

  3. mschart走势图 vc_VC++操作MSChart表格控件,效果不错。

    [实例简介] 在VC++中使用MSChart表格控件,效果不错.MSChart,微软的一个很不错的画图控件,功能比较全面 [实例截图] [核心代码] TestMsChart └── TestMsCha ...

  4. mschart走势图 vc_MSCHART时间走势图 | 学步园

    private void BindGrid() { chart2.Width = 800; chart2.Height = 600; //作图区的显示属性设置 //chart2.ChartAreas[ ...

  5. mschart走势图 vc_MsChart股票指数图形郁闷滴问题求解.(C#)

    希望这个对你能有所帮助:先看效果图: public Form1() { InitializeComponent(); var serieItem = this.chart1.Series[0]; se ...

  6. 一步一步教你写股票走势图——K线图二(图表联动)

    目录 一步一步教你写股票走势图--分时图一(概述) 一步一步教你写股票走势图--分时图二(自定义xy轴) 一步一步教你写股票走势图--分时图三(对齐图表.自定义柱状图高亮) 一步一步教你写股票走势图- ...

  7. python画趋势图_python 绘制走势图

    1.工具 matplotlib numpy 2.matplotlib使用 import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.im ...

  8. 从零开始实现k线图走势图绘制(iOS理论篇)

    前言:现在做金融的越来越多了,在很多的技术群中都有人问到k线图怎么去做,有没有相关的框架?两年前,我刚入这金融公司也是走这条路,但是发现网上的框架不多,干脆就自己搞一个出来.没人分享相关知识,就分享下 ...

  9. 精算黄金走势图k线图阻力位

    在根据黄金走势K线图进行交易的过程中,大家可以利用斐波那契扩展线找到精确的阻力位,但首先要解决两个问题,第一是如何设定斐波那契扩展线的起始波段的一个高点和两个低点,第二个问题,是如何在没有历史走势数据 ...

最新文章

  1. iOS 成员变量的作用范围
  2. Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
  3. 网页设计必备工具 firefox Web Developer插件 CSS工具组教程
  4. SQL_Server_2008完全学习之第八章Transact-SQL编程
  5. android ble 连续读写,Android BLE实现对蓝牙的读写
  6. java access dbq_Java-Access汇总
  7. 使Java具有响应性的框架和工具包:RxJava,Spring Reactor,Akka和Vert.x概述
  8. mysql分组获取其他字段_sqlserver group by后获取其他字段(多种方法)
  9. Visio画UML图基本操作及技巧解析
  10. S7503E V7 snmpv3典型组网配置案例(与IMC联动)
  11. html常规的布局模版,html5/css3常规布局(示例代码)
  12. pdg转pdf的正确方法!!
  13. c语言中的符号总结,C语言中的符号总结
  14. Mac美化,GeekTool获取Yahoo天气图片
  15. 数据库建表语句的使用及简单实战
  16. kubernetes 架构及应用场景
  17. OA系统分级审批功能
  18. 谷歌的Pixel Watch学习能力爆表,他能从手机中学到什么呢?
  19. IN4007和IN4148的作用
  20. 同学,你的系统吐司可能需要修复一下

热门文章

  1. java web项目用cookie记住用户名、密码
  2. 机器学习知识点查漏补缺(朴素贝叶斯分类)
  3. 第一篇:你不一定了解的推荐系统
  4. Linux系统下配置JDK环境变量
  5. Server.MapPath方法的应用方法(转)
  6. 增加限制模拟器2006-2-11
  7. 信号量 Linux函数 semget();semctl();semop();
  8. 如何查看 Windows10 版本号
  9. H265框架编码流程(一)
  10. Android7.1 Audio的FW和HAL层dump PCM数据(三十七)