当前位置:   article > 正文

VS + MFC + Teechart 离线安装及输出三维曲线_mfc,如何将数据转曲线图输出?

mfc,如何将数据转曲线图输出?

一、VS 2022 和 MFC 组件离线安装

1.此处以 Enterprise 版本为例,先下载对应的 exe 文件 (vs_Enterprise.exe),并保存到某个文件夹中,如(F:\vs2022)。

​ 2.使用cmd命令,提前下载各种需要工作负荷或组件的离线包。

       进入cmd 命令界面,首先使用 cd 命令进入到exe文件的位置,如 F:\vs2022。再执行下载命令(依据自己的需求,需要什么组件,执行对应命令即可):

       1)下载命令各参数意义如下:
       --layout :指定工作负荷或组件离线包的保存路径,如: --layout F:\vs2022;不指定位置则默认下载到当前路径。
       --add :指定需要添加的工作负荷或组件的 ID;如果语句中没有 --add,则默认添加所有工作负载和组件。
       --includeOptional/–includeRecommended:安装所选的工作负荷组里面的 必选项/全部项
       --lang :语言(中文:zh-cn ,英文:en-US),安装语言包

       2)添加 For .NET web 和 .NET desktop 工作负荷:

vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NetWeb --add Component.GitHub.VisualStudio --includeOptional --lang zh-cn

       3)添加 使用 C++ 的桌面开发 工作负荷:

vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --lang zh-cn

       4)添加 Visual Studio 扩展开发,通用 Windows 平台开发 工作负荷:

vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Workload.VisualStudioExtension --add Microsoft.VisualStudio.Workload.Universal --includeRecommended --lang zh-cn

       5)添加 使用 C++ 的桌面开发 工作负荷中的 MFC 组件:

    (MFC组件ID:Microsoft.VisualStudio.Component.VC.ATLMFC)

vs_Enterprise.exe --layout --add Microsoft.VisualStudio.Component.VC.ATLMFC --includeRecommended --lang zh-CN

       6)其他工作负荷或组件的ID,参考官网:

Visual Studio Community workload and component IDs | Microsoft Learnhttps://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community?view=vs-2019&preserve-view=true#visual-studio-core-editor-included-with-visual-studio-community-20193.离线安装。

       下载完成后,将整个文件夹拷贝到离线的电脑上(若提示:确定要在不复制其属性的情况下复制此文件,点击 是 即可),双击 vs_setup.exe 即可安装。

        注意,在下图选择工作负荷时,只能选择步骤2中下载过的工作负荷或组件,不然会导致安装失败;同时,可以检查一下有没有漏选步骤2中下载的工作负荷或组件。

       若安装后,需要再下载其他工作负荷或组件,按上述步骤2下载需要的工作负荷和组件后重新拷贝文件到离线电脑,再双击文件中的  vs_setup.exe 后即可。

二、Teechart 安装与配置

1.下载好 Teechart 8 安装包后,将其中 Teechart8.ocx 拷贝到 C:\Windows\SysWOW64 (此处为64位系统的安装方法)目录下;

2.在C:\Windows\SysWOW64目录下找到 cmd.exe ,并以管理员方式运行;

3.输入命令:regsvr32 C:\Windows\SysWOW64\Teechart8.ocx,系统提示注册成功即可。

4.若要安装Teechart5.ocx,需要先安装 TeeChartAndroidEval-4.16.5.13-windows.exe 插件(双击后一直点 NEXT 即可),安装后再执行上面的1~3的步骤。

三、MFC+Teechart 在界面输出三维曲线

1.新建 “MFC应用 ” 工程项目。

        选择保存路径(如 C:\Users\lenovo\source\repos),并定好名称(如 MFCApplication1);点击 “创建” 后,出现如下对话框,在 应用程序类型(T) 栏选择 “基于对话框” ;点击 “用户界面功能” 根据自己选择所需内容,如最小化最大化框等。最后,点击完成即可。

 2.加入Teechart控件。

        右击对话框界面,然后选择 “插入ActiveX插件”,然后选择 TeeChart Pro ActiveX control v8 并点击确定。

​3.添加TeeChart文件。

        将Teechart 8 安装包中的 TeeChart 文件夹,复制到 MFCApplication1 工程文件下。

        此处路径为: C:\Users\lenovo\source\repos\MFCApplication1\MFCApplication1 

 4.添加变量。

        右击Teechart控件,选择 “添加变量” ,并定好名称(如 my_Tchart),点击确定,此时系统自动在 MFCApplication1Dlg.h 文件中生成一个语句:

CTCHART1 my_Tcahrt;

5.程序修改。

        对 MFCApplication1Dlg.h 文件做出以下修改:

       1)将其自动生成的语句 CTCHART1 my_Tcahrt 改为:

CTChart my_Tcahrt;

       2)将其自动生成的语句 #include "CTCHART1.h" 注释掉,添加 #include "TeeChart\tchart.h" ;然后在解决方案资源管理器中,分别移除头文件中的 CTCHART1.h 和 源文件中的 CTCHART1.cpp。右击.h 或 .cpp文件,选择移除即可。

6.添加相关的 .h 或 .cpp文件。

       1)添加.cpp文件

       解决方案资源管理器中,右击源文件,选择添加——>现有项,然后进入TeeChart文件夹,找到需要的.cpp文件即可。

       2)添加.h文件

       解决方案资源管理器中,右击头文件,选择添加——>现有项,然后进入TeeChart文件夹,找到需要的.h文件即可。

       一般需要添加 tchart.cpp/h 、series.cpp/h 、point3dseries.cpp/h 等文件。添加后,需要在MFCApplication1Dlg.cpp 中加入添加文件对应的头文件引用,如:

  1. #include "TeeChart\series.h"
  2. #include "TeeChart\point3dseries.h"

7.调试或运行时,使用Debug + Win32 或 Release + Win32 模式,不然会出现错误:  “Debug Assertion Failed!”。

8.使用TeeChart画图。
        1)添加 series 序列(在该控件中要绘制几条曲线就添加几个 series ,如添加2条曲线,便需要添加2个 series) 。

        双击TeeChart控件,在弹出的对话框中选择 “Add” 按钮。若要绘制三维图,则选择 3D—Point 3D—No Piont;若要绘制二维图,则先取消对话框左下角勾选的 “3D”,然后选择 Standard—Fast Line—Normal。

​       在上图中标出的 1 区域,可以对图像坐标系的坐标轴标识、图例位置、曲线颜色和线宽等进行修改;在 2 区域可以对更改曲线序列的名字。 

      2)画图前先清空图像,定义清空函数

  1. void CMFCApplication1Dlg::ClearAllSeries() 
  2. {
  3.      for( long i  =  0;i <my_Tchart.get_SeriesCount();i ++)
  4.     {
  5.         ((CSeries)my_Tchart.Series(i)).Clear();
  6.     }
  7. }

      2)拖入 Button 控件,双击后在 MFCApplication1Dlg.h 自动生成事件响应函数的声明;

afx_msg void OnBnClickedButton1();

      3)在 MFCApplication1Dlg.cpp 自动生成的 void CMFCApplication1Dlg::onBnclickedButton1(){} 事件响应函数中添加绘图程序。

      定义好动态数组 :vector<double> VectorXt,VectorYt,VectorZt 等,用以保存绘图的数据,数组赋值前同样需要先清空数组;

  1. void CMFCApplication1Dlg::onBnclickedButton1()
  2. {
  3. //清空数组和图像
  4.   VectorXt.clear();
  5. VectorYt.clear();
  6. VectorZt.clear();
  7. VectorXm.clear();
  8. VectorYm.clear();
  9. VectorZm.clear();
  10. ClearAllSeries();
  11.   //绘图数据保存
  12. for(int i=0;i<50;i++)
  13. {
  14. double x,y,z;
  15. x=(double)i;
  16. y=(double)i;
  17. z=(double)i;
  18. VectorXt.push_back(x);
  19. VectorYt.push_back(y);
  20. VectorZt.push_back(z);
  21. VectorXm.push_back(150-x);
  22. VectorYm.push_back(150-y);
  23. VectorZm.push_back(150-z);
  24. }
  25. CSeries myline1,myline2;
  26. int len=VectorXt.size();
  27. myline1  = (CSeries)my_Tchart.Series(0); //定义曲线1
  28. myline2  = (CSeries)my_Tchart.Series(1); //定义曲线2
  29. //若需要添加的第二个TeeChart插件,命名my_Ttchart2
  30. //myline1  = (CSeries)my_Tchart2.Series(0);
  31. //myline2  = (CSeries)my_Tchart2.Series(1);
  32. for(int i=0;i<len;i++)
  33. {
  34.   Xt=VectorXt.at(i);
  35.   Yt=VectorYt.at(i);
  36.   Zt=VectorZt.at(i);
  37.    Xm=VectorXm.at(i);
  38.   Ym=VectorYm.at(i);
  39.   Zm=VectorZm.at(i);
  40.   //三维曲线绘制
  41.   myline1.GetAsPoint3D().AddXYZ(Xt,Yt,Zt,NULL,RGB(255,0,0)); 
  42. myline2.GetAsPoint3D().AddXYZ(Xm,Ym,Zm,NULL,RGB(0,255,0)); 
  43.   //三维图的不同曲线的颜色,需要双击插件后进入Series--> Format  里设置 line 样式和颜色
  44.  
  45. //二维曲线
  46.   //myline2.AddXY(X,Y,NULL,RGB(255,0,0));
  47. }
  48. }

​         注意,若要输出两个图像(不是一个图像两条曲线),就需要在界面再插入另一个TeeChart ActiveX插件:右击对话框—>插入ActiveX插件—>选择 TeeChart Pro ActiveX control v8,然后右击插件——>添加变量—>命名 my_Tchart2,添加变量后需要删除自动生成的 CTCHART2.h 和 CTCHART2.cpp 文件,并修改:

  1. //CTCHART2 my_Tchart2; //修改为下面的定义
  2. CTchart my_Tchart2;

四、MFC+ Teechart 使用注意事项

1.添加 Button 或 其他控件 时,需要在对应的 ***Dlg.cpp文件中写入: #include "resource.h" ;

2. error: 无法解析外部符号!
      1)手动添加错误提示里的的.cpp文件和.h头文件,如 tchart.cpp , series.cpp , point3dseries.cpp 等;右击源文件——>添加——>现有项——>.cpp或.h文件。

      2)也可能是在.h文件里声明了某个成员函数,却没有在对应的.cpp里面实现。

3.移除自动生成的 CTCHART1.h 和 CTCHART1.cpp 文件;

4.error:提示是否忘记向源中添加“#include"pch.h" !

      属性——>C/C++——>预编译头——>不使用预编译头;

5.资源视图中.rc文件提示:在另一个编辑器中打开!

      关闭resource.h文件;

6. error:  Debug Assertion Failed!

     1)确为程序有误:点击 重试 ,“调用堆栈”窗口查看错误代码位置,检查其是否有误;

     2)检查若无误:试着使用 Debug + win32 模式 调试程序;

7.画出的多条三维曲线颜色都是黑色:是因为曲线各点的颜色仍然设置为黑色,需要双击控件后进入Series--> Format 里设置 line 的样式和颜色。

 

8.运行后,TeeChart画图区域显示为空白而没有报错,可能是被其他大控件遮挡了(如 Group Box 控件),此时需要在Group Box 属性里设置 透明 的属性值为 True。

9.使用 Edit Control 进行界面的 输入和输出:
      右击 Edit Control 控件,为各个Edit Control 控件添加一个变量,用于保存Edit Control 控件编辑框中的数据。在弹出的对话框中

           类别:选择为 “值”:
           名称:此处取 input 是输入编辑框的变量名,output 是输出编辑框的变量名;
           变量类型:作为输入的编辑框选择 double 类型,作为输出的编辑框最好选择 CString 类型;

  1. //获取界面中所有 Edit 编辑框内的值 
  2. UpdateData(TRUE); 
  3. //根据程序目的,自定义数据处理程序
  4. CString str;
  5. str.Format(_T("%.4f"),input/2);  //input 是输入编辑框添加的变量名;结果保留4位小数;
  6. output=str;     //output 是输出编辑框添加的变量名;
  7. //更新界面中所有 Edit 编辑框内的值(即在界面显示重新赋值后的output值)
  8. UpdateData(FALSE);

10.按钮弹出消息框
        右击资源视图的Dialog文件—>添加资源—>新建,然后在生成的对话框中(资源视图中的Dialog下查看)右键—>添加类并命名(如:CMyNewDlg )。

        添加 CMyNewDlg 类后,双击执行弹出消息框操作的按钮,在其事件响应函数中添加如下程序:

  1. void CMFCApplication1Dlg::OnBnClickedOk()
  2. {
  3.   CMyNewDlg  Dlg;
  4.  Dlg.DoModal();
  5. }

        注意,在按钮事件响应函数所在的cpp文件程序前面添加: #include   "CMyNewDlg.h "

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/550030
推荐阅读
相关标签
  

闽ICP备14008679号