mschart走势图 vc_[VC] 解决MSChart闪烁的问题
用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闪烁的问题相关推荐
- mschart走势图 vc_问题:MSChart.exe;结果:微软图表控件MsChart使用方法及各种插件下载地址...
昨天在网上看到了微软发布了.NET 3.5框架下的图表控件,第一时间抓下来看了一下,发觉功能很强劲,基本上能想到的图表都可以使用它绘制出来,给图形统计和报表图形显示提供了很好的解决办法,同时支持Web ...
- mschart走势图 vc_MSChart使用小结,MS图表
微软自带Chart控件的使用小结 1.安装: 1)如果是.Net3.5,请先安装"\图片控件 .net3.5版\MSChart.exe": 2)如果是.Net4.0及以上的,控件已 ...
- mschart走势图 vc_VC++操作MSChart表格控件,效果不错。
[实例简介] 在VC++中使用MSChart表格控件,效果不错.MSChart,微软的一个很不错的画图控件,功能比较全面 [实例截图] [核心代码] TestMsChart └── TestMsCha ...
- mschart走势图 vc_MSCHART时间走势图 | 学步园
private void BindGrid() { chart2.Width = 800; chart2.Height = 600; //作图区的显示属性设置 //chart2.ChartAreas[ ...
- mschart走势图 vc_MsChart股票指数图形郁闷滴问题求解.(C#)
希望这个对你能有所帮助:先看效果图: public Form1() { InitializeComponent(); var serieItem = this.chart1.Series[0]; se ...
- 一步一步教你写股票走势图——K线图二(图表联动)
目录 一步一步教你写股票走势图--分时图一(概述) 一步一步教你写股票走势图--分时图二(自定义xy轴) 一步一步教你写股票走势图--分时图三(对齐图表.自定义柱状图高亮) 一步一步教你写股票走势图- ...
- python画趋势图_python 绘制走势图
1.工具 matplotlib numpy 2.matplotlib使用 import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.im ...
- 从零开始实现k线图走势图绘制(iOS理论篇)
前言:现在做金融的越来越多了,在很多的技术群中都有人问到k线图怎么去做,有没有相关的框架?两年前,我刚入这金融公司也是走这条路,但是发现网上的框架不多,干脆就自己搞一个出来.没人分享相关知识,就分享下 ...
- 精算黄金走势图k线图阻力位
在根据黄金走势K线图进行交易的过程中,大家可以利用斐波那契扩展线找到精确的阻力位,但首先要解决两个问题,第一是如何设定斐波那契扩展线的起始波段的一个高点和两个低点,第二个问题,是如何在没有历史走势数据 ...
最新文章
- iOS 成员变量的作用范围
- Android中dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的理解
- 网页设计必备工具 firefox Web Developer插件 CSS工具组教程
- SQL_Server_2008完全学习之第八章Transact-SQL编程
- android ble 连续读写,Android BLE实现对蓝牙的读写
- java access dbq_Java-Access汇总
- 使Java具有响应性的框架和工具包:RxJava,Spring Reactor,Akka和Vert.x概述
- mysql分组获取其他字段_sqlserver group by后获取其他字段(多种方法)
- Visio画UML图基本操作及技巧解析
- S7503E V7 snmpv3典型组网配置案例(与IMC联动)
- html常规的布局模版,html5/css3常规布局(示例代码)
- pdg转pdf的正确方法!!
- c语言中的符号总结,C语言中的符号总结
- Mac美化,GeekTool获取Yahoo天气图片
- 数据库建表语句的使用及简单实战
- kubernetes 架构及应用场景
- OA系统分级审批功能
- 谷歌的Pixel Watch学习能力爆表,他能从手机中学到什么呢?
- IN4007和IN4148的作用
- 同学,你的系统吐司可能需要修复一下
热门文章
- java web项目用cookie记住用户名、密码
- 机器学习知识点查漏补缺(朴素贝叶斯分类)
- 第一篇:你不一定了解的推荐系统
- Linux系统下配置JDK环境变量
- Server.MapPath方法的应用方法(转)
- 增加限制模拟器2006-2-11
- 信号量 Linux函数 semget();semctl();semop();
- 如何查看 Windows10 版本号
- H265框架编码流程(一)
- Android7.1 Audio的FW和HAL层dump PCM数据(三十七)