MFC中利用TeeChart控件完成三维图形绘制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dejingqianshen/article/details/18460925

        MFC中利用TeeChart控件完成三维图形绘制        

 (如需交流,请关注公众号:神马观止)    

前一段时间由于帮一个朋友处理一些数据,需要编写一个最简单的界面,实现数据显示。中间遇到一些问题,我在接下来得内容中分别介绍,同时也把我解决这些问题的过程简短地进行叙述。

       原始数据存储在TXT文档中,需要读入程序然后进行处理后保存到自己命名的TXT文档中(方便以后用Matlab进行仿真分析),同时在界面中通过TeeChart将各参数变化趋势显示出来。当然,我这里重点不是介绍数据处理算法,而且由于保密原因,不便于涉及具体数据内容,只介绍TeeChart控件的使用。顺便介绍TXT文档读取以及写入保存的相关内容。

1.TXT文档读取

void CHefeiData_MJDlg::OnReadfile() 
{
    //选择所要读取的txt文件
    CString filename;
    CFileDialog hFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,(LPCTSTR)_TEXT("TXT Files(*.txt)|*.txt|All Files (*.*)|*.*||"),NULL);
    if (IDOK==hFileDlg.DoModal())
    {
        filename=hFileDlg.GetFileName();
        //判断读取的文件是否为原文件
        if ("hefei_data.txt"!=filename)
        {	
            MessageBox("选择文件错误!");
        }
        else
        {
            fp_read=fopen(filename,"r");
            if (NULL==fp_read)
            {
                MessageBox("文件读取错误!");//异常处理
            }
        }
    }
}

找到hefei_data.txt  文件并选中打开。

2.处理后数据保存

void CHefeiData_MJDlg::OnTransfer() 
{
//将转换后的数据保存在txt文件
CString filename;
CFileDialog hFileDlg(FALSE,_T("txt"),NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST |OFN_READONLY,(LPCTSTR)_TEXT("转换后数据保存文件(*.txt)"),NULL);//False:保存文件对话框
if(hFileDlg.DoModal())
{
filename=hFileDlg.GetFileName();
}
fp_write=fopen(filename,"w");
if (NULL==fp_write)
{
MessageBox("所要写入的文件创建失败!");//异常处理
}
fprintf(fp_write,
                   "%-8s  %-8s  %-8s %-8s  %-8s  %-8s  %-8s  %-8s  %-8s  %-8s  %-8s  %-8s %-8s %-8s %-8s\n",
       "P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","P13","P14","P15");
while (1)
{
if (feof(fp_read))
{
MessageBox("数据转换结束!");
        break;
}
               /***********************************************************************
                *****                        Data Processing                          *****
                **********************************************************************/
fprintf(fp_write,"%-8.4f  %-8.4f  %-8.4f %-8.4f  %-8.4f  %-8.4f  %-8.4f  %-8.4f  %-8.4f  %-8.4f  %-8.4f                                    %-8.4f %-8.4f %-8.4f %-8.4f  \n",……);
} 
fclose(fp_write);
}

3.TeeChart三维曲线显示

         下面才真正进入今天的主题——利用TeeChart完成曲线显示。首先需要在网上下载TeeChart控件TeeChart8.ocx(注意,我这里用的是vision8),将其复制到C:\WINDOWS\system32文件夹下,然后在“开始”中选择“运行”,输入“regsvr32 TeeChart8.ocx”确定,即完成了TeeChart控件的注册。

        接下来在VC中“Project”→“Add to Project”→“Components and Controls”,选择Registered ActiveX Controls,找到TeeChart Pro Activex control v8,点击“Insert”,Close即可,这样在控件工具栏中就会出现,拖入对话框即可。这样就完成了TeeChart的插入工作。

        下一步需要对TeeChart进行编辑。我当时就是因为没有添加Series导致程序始终出现问题(当然,如果,没有没有添加,可以用另外一种方法在程序中添加,不过麻烦一点)。点击“Edit Chart”进入编辑对话框。其中最为重要的是点击Add按钮,进入如下图所示界面:


        如果没有出现这样的界面,可能是因为没有选中“3D”的原因。在这里面需要选择Point 3D,然后OK即可。如果希望改变点型或是颜色等属性,可以自己试一试进行修改,这并不难。编辑完成后的TeeChart控件如下图所示:



       最后进入代码编写部分。先要将TeeChart控件关联到Dialog类的对象的成员变量,然后在OnInitDialog()函数中添加一行代码:

        

//显示3D效果
m_ctrChart1.GetAspect().SetView3D(TRUE);

需要在while循环最后添加添加如下代码:

      

      //value[0]、value[1]、value[2]分别是三维方向上的X、Y、Z值
       m_ctrChart1.Series(0).GetAsPoint3D().AddXYZ(value[0],value[1],value[2], NULL, RGB(255,0,0));
      然后在fclose(fp_write)后面添加如下代码:
       m_ctrChart1.GetLegend().SetVisible(FALSE);      //隐藏图例
       m_ctrChart1.GetAxis().GetDepth().SetVisible(TRUE);  //显示Z轴
       m_ctrChart1.GetAxis().GetDepth().GetLabels().SetVisible(TRUE);  //显示Z轴上的坐标
       m_ctrChart1.GetAxis().GetDepth().GetLabels().SetStyle(0);  //设置显示坐标的风格

        这样就完成了最后界面的设计,并能够显示出三维曲线图形!效果如下图:由于数据是某初始数据,因为基本处于静止,而三维曲线图也反映出这种情况。如果需要无点图,可以编辑控件使其不显示点。





没有更多推荐了,返回首页