chart控件的简单使用

MFC学习笔记(一)High Speed Chart 控件使用 引言 大学期间学习STM32时,由于参加机器人比赛,第一次接触到摄像头,让我深深被其吸引,还记得当初为了点亮第一颗摄像头,第一次通过自己写的颜色识别算法让它按照自己的意愿去识别出每帧图像的内容,正确标识出物体位置信息时的激动,那时的我们真的是废寝忘食般的吸收大量新知识,连续通宵好几晚,最终,付出的辛苦使我们收获颇丰。刚大学毕业时,我在一家医疗器械公司担任硬件工程师,出于对摄像头及与其相关的图像识别... 阅读详情

看到很多人在论坛求助  毕业设计或者其他课题中的图表应用,最简单的就是mschart   但它有很多缺点   网上教程一大把 这里说下codeproject上的 HiSpeedChart控件  用起来也是很简单的。

源地址在这里http://www.codeproject.com/KB/miscctrl/High-speedCharting.aspx

 

以对话框应用为例

1添加.h  .cpp进入工程,然后在Cxxdlg.h里添加

 

#include "ChartCtrl_source/ChartCtrl.h"
#include "ChartCtrl_source/ChartLineSerie.h"

 

 

和

 

 

public:
 CChartCtrl m_Chart;
 CChartLineSerie* pLineSerie;

 

 

 

同时在resource.h里添加

 

#define IDC_CHARTCTRL     1001

 

 

 

 

 

 

2Cxxdlg.cpp里OnInitDialog()添加

 

CRect rc;
 GetClientRect(rc);
 rc.bottom -= 50;
 m_Chart.Create(this,rc,IDC_CHARTCTRL);
 m_Chart.SetEdgeType(0);
 m_Chart.SetBackColor(RGB(239,246,248));
 
 CChartStandardAxis* pBottomAxis = 
  m_Chart.CreateStandardAxis(CChartCtrl::BottomAxis);
 pBottomAxis->SetMinMax(0, 10);
 CChartStandardAxis* pLeftAxis =
  m_Chart.CreateStandardAxis(CChartCtrl::LeftAxis);
 pLeftAxis->SetMinMax(0, 10);
 pLineSerie = m_Chart.CreateLineSerie();
 double XValues[10],YValues[10];
 for (int i=0;i<10;i++)
 { 
  XValues[i] = YValues[i] = i;
 }
 pLineSerie = m_Chart.CreateLineSerie();
 pLineSerie->SetPoints(XValues,YValues,10);
 pLineSerie->SetColor(RGB(255,0,0));

 

 

 

 

 

 

ok end

-------------------------------------2014.12.26-----------------------------

给曲线添加个label标签也比较简单,记录如下

第一种是静态标签,  在上面代码的基础上添加一句

pLineSerie->CreateBalloonLabel(5,_T("X = 5,Y = 5"));

还有一种是自定义标签,需要从CChartLabelProvider类派生出新类,实现定制标签功能,有一个作者派生的CChartBalloonLabel类可以参考。效果如图

 

 

 =================================================================================

2014.12.27经常有需要实时显示曲线坐标点数字的功能,在这个类里实现比较方便,先看效果图

这里主要用Cursor的属性。从CChartCursor派生是最好的方法,这里这样派生

class CCustomCursorListener : public CChartCursorListener
{
public:
	void OnCursorMoved(CChartCursor *pCursor, double xValue, double yValue)
	{
//		TChartStringStream ssText;
//		ssText << _T("Cursor moved: xPos=") << xValue << _T(", yPos=") << yValue;
//		TChartString strText = ssText.str();
	//	MessageBox(NULL,strText.c_str(), _T("Info"), MB_OK);
		x = xValue;
		y = yValue;

		SendMessage(m_hwnd,MESSAGE_UPDATEPOS,0,0);
		// Do something with the string...
	}

	void GetHwnd(HWND hwnd)
	{
		m_hwnd = hwnd;
	}
	HWND m_hwnd;
};

 

 

 

 为了传递出鼠标移动的消息,需要获得主窗口的句柄,添加了GetHwnd函数。

同时在工程里添加全局变量double x,y;dlg.h里添加

	CCustomCursorListener* m_pCursorListener;
<span style="white-space:pre">	</span>afx_msg LRESULT OnUpdateData(WPARAM wp,LPARAM lp);

dlg.cpp里添加

	ON_MESSAGE(MESSAGE_UPDATEPOS,OnUpdateData)

和

CChartCrossHairCursor* pCrossHair =
		m_Chart.CreateCrossHairCursor();
	
	HWND hWnd = this->GetSafeHwnd();
	m_pCursorListener = new CCustomCursorListener;
	m_pCursorListener->GetHwnd(hWnd);	
	pCrossHair->RegisterListener(m_pCursorListener);

对话框添加了一个CStatic控件之后

 

 

LRESULT CHiChartDlg::OnUpdateData(WPARAM wp,LPARAM lp)
{

	CString s;
	s.Format(_T("x = %.2f,y = %.2f"),x,y);
	CStatic* pStatic;
	pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
	pStatic->SetWindowText(s);
	return 1;
}


就可以实现了

如果我的文字解决了你的问题,请打个赏的,让我更有动力:)

[MFC]使用ChartCtrl类绘图 MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个C++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。... 阅读详情

相关推荐

MFC使用高速绘图控件high-speed Charting Control绘制柱形图

MFC使用高速绘图控件high-speed Charting Control绘制柱形图

一万年太久,只争朝夕 2519

关于MFC的使用总结之三——使用ChartCtrl绘制曲线

MFC的使用总结之三——使用ChartCtrl绘制曲线写在前面添加ChartCtrl库添加代码 写在前面 MFC是一种用c++设计交互界面的的开发工具,在二三十年前比较流行,但目前比较少用了。所以现在使用MFC进行开发,相关资料的查找也比较困难。最近做了一个与MFC有关的项目,其中用到的相关知识总结与此。在使用工具时,最大的资料其实就是那个库本身,查看库内的代码总会有意想不到的收获。本人用的是VS...

墨藍的博客 1万+

Dundas Chart for .NET 控件的简单使用

首先,介绍一下产品的背景:        Dundas Chart for .NET是在.NET图表领域中的领跑者。这个获得了多个大奖的控件产品提供给您最全面的功能、最完善的样品框架和最佳的技术支持。从开始到结束,我们致力于为你提供你所需要的技术,使您的项目在最短时间内取得成功。使用该图表控件,开发者能够容易地实现高级的图表展示,使企业更加直观的有效的管理和分析数据,大量提高您的工作效率。(官

mashuangjun的专栏 2003

C#中的chart 控件的简单使用

窗口是这样的; 代码是这样的; private void Form1_Load(object sender, EventArgs e) { chart1.Series[0].YValueMembers = "分数"; chart1.Series[0].XValueMember = "科目"; ...

霏段的博客 1307

MFC之图像绘制---高速绘图控件(High-speed Charting Control)应用(一)

High-speed Charting Control的下载、配置及创建 一、介绍 必须吹一波这个大佬,我觉得这个可能是MFC中最好用的绘图控件了,相关下载链接如下: 官方下载地址https://www.codeproject.com/Articles/14075/High-speed-Charting-Control 我上传的资源地址https://download.youkuaiyun.com/dow...

wsq119的博客 3600

MFC ChartCtrl范例和源码

ChartCtrl例子和源码,ChartCtrl画曲线、柱状图,以及各种设置

WinForm Chart控件简单应用示例

WinForm Chart控件简单应用示例 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源文件提供了一个在WinForm应用程序中使用Chart控件的简单示例。通过该示例,您可以学习如何在WinForm中创建和展示饼图、柱状图和曲线图。无论您是初学者还是有一定经验的开发者,这个示例都能帮助您快速上手并掌握Chart控件的基本用法。 内容概述 饼图:展示了如何使用C...

gitblog_09746的博客 341

ChartCtrl开源代码

ChartCtrl是用于绘制图表的开源代码,利用ChartCtrl可以自己绘制条形图、折线图等等,基于ChartCtrl开源代码可以进行自己绘制各种图表

winform中chart图表控件简单使用

将工具箱中的chart控件拖到窗体中 选中chart控件,在属性中找到Series 修改名字和选择图表类型 ChartType设置图表是折线图、还是柱状图等 后台绑定数据 private void BindData() { List<int> x = new List<int>(); List<int> y = new List<int>(); Random ran

ylattx的博客 1501

ChartCtrl控件库(可在VS2019中使用)

对VS2010版进行了优化,在VS2019环境可以使用

ChartCtrl_source

High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件,在CodeProject中原文的源代码文件

WinForm Chart 控件简单使用,快速上手

.net winform chart最快上手指南,不说废话,直接开始

iam_running的博客 2299

手把手教你用Arduino Uno控制meArm机械臂(附完整代码+避坑指南)

本文提供了一份详尽的meArm机械臂控制指南,涵盖从Arduino Uno硬件连接到Servo库编程的完整流程。重点讲解了如何通过独立供电、软件限位和平滑运动函数实现稳定控制,并设计了串口指令协议与高级功能,帮助创客有效规避舵机抖动、电源不足等常见问题,让机械臂运行更流畅可靠。

gpt4scribbler的博客 540

WinForm Chart控件简单应用示例:快速上手数据可视化

WinForm Chart控件简单应用示例:快速上手数据可视化 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发中,数据可视化是不可或缺的一部分。无论是在企业级应用中展示业务数据,还是在个人项目中分析统计信息,图表控件都能帮助我们更直观地理解和展示数据。WinForm Chart控件简单应用示例项目正是为此而生,它提供了一个在WinForm应用程序中使用C...

gitblog_09712的博客 457

Anaconda启动失败,一直在loading application的问题

实战基础新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本

Tristan的博客 2771

VMware共享磁盘配置实战:从零搭建多机共享存储环境

本文详细介绍了在VMware环境中从零开始配置共享磁盘的完整实战流程。通过创建共享磁盘、挂载至多台虚拟机并修改.vmx配置文件等关键步骤,帮助用户搭建可用于数据库集群(如Oracle RAC)测试的多机共享存储环境,并提供了核心参数设置与常见问题排查指南。

weixin_29284201的博客 491

C用serialPort和chart控件实现简单波形绘制:直观展示数据变化的利器

C#用serialPort和chart控件实现简单波形绘制:直观展示数据变化的利器 去发现同类优质开源项目:https://gitcode.com/ 在当今的软件开发中,实时数据的可视化变得越来越重要。本文将为您详细介绍一个开源项目——C#用serialPort和chart控件实现简单波形绘制,该项目以其实用性和易用性,成为技术人员绘制波形图的优秀选择。 项目介绍 C#用serialPort和ch...

gitblog_06707的博客 731

Cadence OrCAD常见引脚错误排查指南:从原理图到封装的完整解决方案

本文详细解析Cadence OrCAD设计中常见的引脚错误问题,提供从原理图到封装的系统化解决方案。涵盖错误诊断、元件库修复、封装管理及自动化处理技巧,帮助工程师高效解决ORCAP-36022等典型错误,确保设计流程顺畅。

weixin_29294975的博客 255

C用serialPort和chart控件实现简单波形绘制

C#用serialPort和chart控件实现简单波形绘制 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源提供了一种使用C#语言结合serialPort和chart控件实现简单波形绘制的方法。主要功能是将串口发送的数据以波形的形式进行显示。此示例使用串口调试助手和虚拟串口VSPD软件来模拟串口发送数据。 功能特点 将串口接收到的数据实时显示为波形图 适用于单字节数...

gitblog_06764的博客 888

UG\NX二次开发 使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征

使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征。

王牌飞行员_里海的博客 850

Spring AI Alibaba实战训练营-13语音生成应用开发指南

本文介绍了如何基于Spring AI Alibaba创建DashScope语音应用,支持文本转语音(TTS)和语音转文本(STT)功能。主要内容包括:1)环境准备要求Java 17+、Maven 3.6+及阿里云DashScope API Key;2)通过Spring Initializr创建项目并配置相关依赖;3)设置API密钥的安全配置方法;4)实现语音合成的同步和流式功能,包括创建控制器类、调用API接口及保存语音文件。文章提供了详细的代码示例和配置说明,帮助开发者快速搭建语音处理应用。

program哲学 403

关于微软C#中的CHART图表控件的简单使用

Series属性就是各种图表的图形啦,比如我们要显示某月的天气变化,那么应该有这样两组数据,一组是天数,一组是每天对应的温度值,同时绑定到Series对象中,再将Series对象Add()到Chart控件的Series属性里即可。string[] x = new string[] { "南山大队", "福田大队", "罗湖大队", "宝安大队", "指挥处", "大帝科技", "南山大队", "福田大队", "罗湖大队", "宝安大队", "指挥处", "大帝科技"};//圆饼外显示的信息。

fangyuan621的专栏 2436

osg中显示3dtiles和cesiumIon

如下图为CesiumTilesetNode数据更新相关代码,将OSG对应的ViewMatrix、ProjectionMatrix和窗口信息传递给tileset->updateView()实现Cesium-native的场景更新。整体结构,其中 CesiumTilesetNode依赖Cesium3DTilesSelection::Tileset,实现数据的更新以及确定需要绘制的节点。1.1 CesiumNative3DTileslayer图层。

CPWWHSU的博客 889
上一篇: VS08SP1中CMFCPropertyGridCtrl的基本用法
下一篇: List Control里插入ICO图标及行背景色交替改变
洗洗睡去
博客等级 码龄19年 277粉丝 90原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值