VS + MFC + Teechart 离线安装及输出三维曲线

一、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 中加入添加文件对应的头文件引用,如:

#include "TeeChart\series.h"
#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)画图前先清空图像,定义清空函数

void CMFCApplication1Dlg::ClearAllSeries() 
{
     for( long i  =  0;i <my_Tchart.get_SeriesCount();i ++)
    {
        ((CSeries)my_Tchart.Series(i)).Clear();
    }
}

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

afx_msg void OnBnClickedButton1();

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

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

void CMFCApplication1Dlg::onBnclickedButton1()
{
   //清空数组和图像
   VectorXt.clear();
   VectorYt.clear();
   VectorZt.clear();
   VectorXm.clear();
   VectorYm.clear();
   VectorZm.clear();
   ClearAllSeries();

   //绘图数据保存
   for(int i=0;i<50;i++)
   {
      double x,y,z;
      x=(double)i;
      y=(double)i;
      z=(double)i;
      VectorXt.push_back(x);
      VectorYt.push_back(y);
      VectorZt.push_back(z);
      VectorXm.push_back(150-x);
      VectorYm.push_back(150-y);
      VectorZm.push_back(150-z);
   }

   CSeries myline1,myline2;
   int len=VectorXt.size();
   myline1  = (CSeries)my_Tchart.Series(0);  //定义曲线1
   myline2  = (CSeries)my_Tchart.Series(1);  //定义曲线2

   //若需要添加的第二个TeeChart插件,命名my_Ttchart2
   //myline1  = (CSeries)my_Tchart2.Series(0);  
   //myline2  = (CSeries)my_Tchart2.Series(1); 

   for(int i=0;i<len;i++)
   {
     Xt=VectorXt.at(i);
     Yt=VectorYt.at(i);
     Zt=VectorZt.at(i);

     Xm=VectorXm.at(i);
     Ym=VectorYm.at(i);
     Zm=VectorZm.at(i);
     
     //三维曲线绘制
     myline1.GetAsPoint3D().AddXYZ(Xt,Yt,Zt,NULL,RGB(255,0,0)); 
     myline2.GetAsPoint3D().AddXYZ(Xm,Ym,Zm,NULL,RGB(0,255,0)); 

     //三维图的不同曲线的颜色,需要双击插件后进入Series--> Format  里设置 line 样式和颜色
     
     //二维曲线
     //myline2.AddXY(X,Y,NULL,RGB(255,0,0));
   }
}

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

//CTCHART2 my_Tchart2;  //修改为下面的定义
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 类型;

//获取界面中所有 Edit 编辑框内的值 
UpdateData(TRUE); 

//根据程序目的,自定义数据处理程序
CString str; 
str.Format(_T("%.4f"),input/2);  //input 是输入编辑框添加的变量名;结果保留4位小数; 
output=str;                      //output 是输出编辑框添加的变量名;

//更新界面中所有 Edit 编辑框内的值(即在界面显示重新赋值后的output值)
UpdateData(FALSE);

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

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

void CMFCApplication1Dlg::OnBnClickedOk()
{
   CMyNewDlg  Dlg;
   Dlg.DoModal();
}

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

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 在VS2017 MFC中,我们可以利用TeeChart来绘制折线图。下面是一个简单的步骤: 步骤1:安装TeeChart控件 首先,我们需要安装TeeChart控件。可以从官方网站上下载控件安装程序,然后按照提示进行安装。 步骤2:创建MFC项目 在VS2017中,创建一个新的MFC项目。 步骤3:添加TeeChart控件 在项目中右键单击资源视图中的对话框文件,选择“添加TeeChart控件”。控件将被添加到对话框中。 步骤4:设置控件属性 在对话框编辑器中,选中刚添加的TeeChart控件。在属性窗口中,可以设置控件的各种属性,例如折线图的标题、坐标轴标签等。 步骤5:绘制折线图 在代码中,使用以下示例代码可以绘制简单的折线图: ```cpp // 绘制折线图 void CMyDialog::DrawLineChart() { // 获取TeeChart控件 CTCWnd* pChartCtrl = (CTCWnd*)GetDlgItem(IDC_CHARTCTRL1); // 创建一个TChart对象 TChart* pChart = pChartCtrl->GetChart(); // 创建一个折线图系列 LineSeries* pSeries = new LineSeries(pChart->GetSeries()); // 添加数据 pSeries->Add(1, 100); pSeries->Add(2, 150); pSeries->Add(3, 200); pSeries->Add(4, 250); pSeries->Add(5, 300); // 绘制折线图 pChart->Draw(); } ``` 在需要绘制折线图的地方,调用DrawLineChart函数即可。 通过以上步骤,我们就可以在VS2017 MFC中利用TeeChart绘制折线图了。根据实际需求,我们可以进一步设置折线图的样式、数据等。 ### 回答2: 在VS2017的MFC应用程序中,可以通过以下步骤使用TeeChart来绘制折线图: 1. 首先,确保已经安装了TeeChart控件。可以从官方网站下载TeeChart,并按照安装步骤进行安装。 2. 打开VS2017,在MFC应用程序中创建一个新的对话框应用程序项目。 3. 双击资源视图中的对话框,将对话框设计器窗口打开。 4. 在工具箱中找到TeeChart控件,并将其拖放到对话框上。 5. 右键单击TeeChart控件,选择“属性”。 6. 在属性窗口中,将"Type"属性设置为2 (折线图)。 7. 在代码视图中找到对应的对话框类文件(通常是xxxDlg.cpp),找到OnInitDialog()函数。 8. 在OnInitDialog()函数中添加以下代码来绘制折线图: ```cpp // 在 OnInitDialog() 函数中添加以下代码 // 获取TeeChart控件对象 CTChart *m_pChart = static_cast<CTChart*>(GetDlgItem(IDC_TCHART1)); // 创建一个折线系列 CLineSeries *m_pSeries = new CLineSeries(m_pChart->get_Chart()); // 设置折线系列的标题 m_pSeries->get_Title()->SetCaption("折线图示例"); // 添加数据点 m_pSeries->Add(1, 20); m_pSeries->Add(2, 30); m_pSeries->Add(3, 40); m_pSeries->Add(4, 50); // 将折线系列添加到TeeChart控件 m_pChart->get_Chart()->get_Series().Add(m_pSeries); // 绘制图表 m_pChart->get_Chart()->Draw(); ``` 9. 编译并运行应用程序,即可看到在对话框上绘制了一个简单的折线图。 通过以上步骤,您可以在VS2017的MFC应用程序中利用TeeChart成功绘制出折线图。根据您的需求,您还可以进一步配置TeeChart控件来实现更多的功能,例如设置曲线颜色、轴标题等。 ### 回答3: 在VS2017中使用MFC绘制折线图需要使用TeeChart控件。下面是一些步骤供参考: 1. 首先,在VS2017中创建一个MFC应用程序项目。 2. 从TeeChart官方网站下载并安装相应的TeeChart版本。 3. 打开项目,并在对话框资源中添加一个TChart控件到对话框中。可以在工具箱中找到它,或者手动在对话框资源中绘制一个静态矩形控件,然后将其类别更改为TChart。 4. 在对话框类的头文件中包含TChart.h头文件。 ```c++ #include "TChart.h" ``` 5. 在对话框类的成员变量中声明一个TChart对象。 ```c++ CTChart m_chart; ``` 6. 在OnInitDialog()函数中创建TChart对象,并设置一些常见的属性。 ```c++ BOOL CMyDialog::OnInitDialog() {     CDialog::OnInitDialog();     // 创建TChart对象     m_chart.Create(_T(""), WS_CHILD | WS_BORDER | WS_VISIBLE, CRect(10, 10, 500, 300), this, IDC_CHART);     // 设置标题     m_chart.SetHeader(_T("折线图"));     // 设置坐标轴标题     m_chart.GetAxes().GetLeft().GetTitle().SetText(_T("Y轴"));     m_chart.GetAxes().GetBottom().GetTitle().SetText(_T("X轴"));     // 设置X轴和Y轴的最小值和最大值     m_chart.GetAxes().GetLeft().SetMinimum(0);     m_chart.GetAxes().GetLeft().SetMaximum(100);     m_chart.GetAxes().GetBottom().SetMinimum(0);     m_chart.GetAxes().GetBottom().SetMaximum(10);     return TRUE; } ``` 7. 添加一个按钮控件到对话框,并在按钮的单击事件处理函数中编写绘制折线图的代码。 ```c++ void CMyDialog::OnBnClickedButtonDraw() {     // 清空图表     m_chart.RemoveAllSeries();     // 创建一个折线图系列     CSeries* pSeries = m_chart.AddSeries(TChartSeriesType::stLine);     // 设置折线图的名称     pSeries->GetName().SetText(_T("折线图系列"));     // 添加一些数据点     pSeries->Add(1, 20);     pSeries->Add(2, 40);     pSeries->Add(3, 60);     pSeries->Add(4, 80);     pSeries->Add(5, 100);     // 刷新图表     m_chart.Refresh(); } ``` 8. 运行程序,点击按钮即可在TeeChart控件中绘制出折线图。 这只是一个简单的示例,你还可以通过设置其他属性来自定义你的折线图,例如线条颜色、线条样式、图例和标签等。更详细的用法请参考TeeChart的官方文档或参考其他相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值