VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

这篇具有很好参考价值的文章主要介绍了VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Teechart控件安装注册:

        1. 将TeeChart5.ocx 复制到C:\Windows\SysWOW64。         2. 找到同目录下的cmd.exe。         3. 右键 管理员身份 打开 ,此刻进入的是system32 (不是管理员打开cmd的话,用win + R的话,会提示模块已加载,但对DllRegisterServer的调用失败)。         4. 使用cd命令,进入 64位的目录 cd C:WindowsSysWOW64。         5. 执行 regsvr32 TeeChart5.ocx 系统会提示成功。

 Teechart控件源文件:

        VS2019通过MFC Typelib类向导添加Teechart相关类后会发生一些意想不到的错误,例如类型确实,文件缺失等错误。解决办法就是不适用MFC TypeLib添加Teechart的相关类。通过手动添加的方式来添加相关类文件。

 Teechart动态用法:

        下面主要介绍动态添加曲线、改变曲线颜色、设置曲线外观、改变曲线类型、改变面板颜色、面板样式等相关的功能,导入导出功能。

1、 Teechart添加曲线:

        手动添加相关类,添加相关类的头文件。在添加类的头文件种增加如下语句,编译报错的都增加相关的重命名代码。

#import "C:\\WINDOWS\\SysWow64\\TeeChart5.ocx" no_namespace rename("LoadImage","myLoadImage") rename("TextOut", "myTextOut")

        #include"CSeries.h"         #include"MacroDefinition.h"         #include"CTCHART_CURVE.h"         #include"CAxes.h"         #include"CAxis.h"         #include"CGradient.h"         #include"CPanel.h"         #include"CLegendSymbol.h"         #include"CAspect.h"         #include"CChartGrid.h"         #include"CPen.h"         #include"CJPEGExport.h"         #include"CBMPExport.h"         #include"CExport.h"         #include"CLineSeries.h"         #include"CFastLineSeries.h"         #include"CImport.h"         #include"CPrinter.h"

变量定义

        定义一个Teechart图标控件类型变量和3个曲线类变量

        CTCHART_CURVE m_TemCurve;

       CSeries       m_TemZoneChannelOne, m_TemZoneChannelTwo, m_TemZoneChannelThree;   

在timer种自动添加曲线 

void CTemCurveControl::OnTimer(UINT_PTR nIDEvent)
{
	switch (nIDEvent)
	{
	case 1:
	{
		CString str;
		m_TemZoneChannelOne   = (CSeries)m_TemCurve.Series(0);
		m_TemZoneChannelTwo   = (CSeries)m_TemCurve.Series(1);
		m_TemZoneChannelThree = (CSeries)m_TemCurve.Series(2);
		double y = 0;

		data++;
		m_TemZoneChannelOne.AddXY(double(data) / 60, sin(double(data) / 5), NULL, 0);//A为横坐标 Z1为纵坐标画连线、
		m_TemZoneChannelTwo.AddXY(double(data) / 50, cos(double(data) / 50), NULL, 0);//A为横坐标 Z1为纵坐标画连线
		m_TemZoneChannelThree.AddXY(double(data) / 60, cos(double(data) / 5), NULL, 0);//A为横坐标 Z1为纵坐标画连线
		break;
	}
	default:
		break;
	}
	CDialogEx::OnTimer(nIDEvent);
}

 2、改变曲线颜色(简单封装)

void CTemCurveControl::OnSetSeriesColor(CSeries mCeries,COLORREF mColor)
{
	mCeries.put_Color(mColor);
}

 3、改变轴的范围(简单封装)

void CTemCurveControl::OnSetAxisMinAndMaxValue(CTCHART_CURVE& mTeechar, double Xmini, double Xmax, double Ymin, double Ymax)
{
	CAxes    m_Axis= mTeechar.get_Axis();
	CAxis    m_BottomXAxis = m_Axis.get_Bottom();
	CAxis    m_LeftYAxis = m_Axis.get_Left();
	m_BottomXAxis.SetMinMax(Xmini, Xmax);
	m_LeftYAxis.SetMinMax(Ymin, Ymax);
	m_BottomXAxis.Scroll(1.0,TRUE);
	
	m_BottomXAxis.put_GridCentered(TRUE);
}

4、启用面板渐变(简单封装)

void CTemCurveControl::OnEnablePanelGradientVisible(CTCHART_CURVE& mTeechar,BOOL mVisible)
{
	CPanel   m_Panel = mTeechar.get_Panel();
	CGradient m_Gradiet = m_Panel.GetGradient();
	m_Gradiet.SetVisible(mVisible);
}

 5、改变渐变颜色(简单封装)

void CTemCurveControl::OnSetTeechartPanelGadientVisible(CTCHART_CURVE& mTeechar,COLORREF mStartColor, COLORREF mEndColor/*,BOOL Visible*/)
{
	CPanel   m_Panel = mTeechar.get_Panel();
	CGradient m_Gradiet = m_Panel.GetGradient();
	m_Gradiet.SetStartColor(mStartColor);
	m_Gradiet.SetEndColor(mEndColor);
	

}

6、启用3D外观(简单封装)

void CTemCurveControl::OnSetTeechartAspect3DViewVisible(CTCHART_CURVE& mTeechar,BOOL IsView3D)
{
	CAspect Asp = mTeechar.get_Aspect();
	Asp.put_View3D(IsView3D);
}

 7、改变线型(简单封装)

void CTemCurveControl::OnCbnSelchangeComboLinestyleSelect()
{
	int m_LineStyleSel = 0;
	m_LineStyleSel = m_LineStyleSelectSet.GetCurSel();
	switch (m_LineStyleSel)
	{
	case 0:
		m_FastLineStyle = psSolid;
		break;
	case 1:
		m_FastLineStyle = psDash;
		break;
	case 2:
		m_FastLineStyle = psDot;
		break;
	case 3:
		m_FastLineStyle = psDashDot;
		break;
	case 4:
		m_FastLineStyle = psDashDotDot;
		break;
	case 5:
		m_FastLineStyle = psInsideFrame;
		break;
	case 6:
		m_FastLineStyle = psSmallDots;
		break;
	default:
		break;
	}
	for (int i = 0; i < m_TemCurve.get_SeriesCount(); i++)
	{
		OnSetSeriesStype(m_TemCurve, i, m_FastLineStyle);
		printf("OnSetSeriesStype(m_TemCurve, %d, %d)\n",i, m_FastLineStyle);
	}
}
void CTemCurveControl::OnSetSeriesStype(CTCHART_CURVE &mTchart, long CeriesIndex, long mStype)
{
	CSeries mSeries = mTchart.Series(CeriesIndex);
	CFastLineSeries mLines= mSeries.get_asFastLine();
	CPen1 mPen = mLines.get_LinePen();
	mPen.SetStyle(mStype);
}

 8、改变线宽(简单封装)

void CTemCurveControl::OnCbnSelchangeComboLinewithSelect()
{
	int m_LineWithSel = 0;
	m_LineWithSel = m_LineWithSelectSet.GetCurSel();
	switch (m_LineWithSel)
	{
	case 0:
		m_FastLineWith = 1;
		break;
	case 1:
		m_FastLineWith = 2;
		break;
	case 2:
		m_FastLineWith = 3;
		break;
	case 3:
		m_FastLineWith = 4;
		break;
	case 4:
		m_FastLineWith = 5;
		break;
	default:
		break;
	}
	for (int i = 0; i < m_TemCurve.get_SeriesCount(); i++)
	{
		OnSetSeriesLineWith(m_TemCurve, i, m_FastLineWith);
		printf("OnSetSeriesLineWith(m_TemCurve, %d, %d)\n",i, m_FastLineWith);
	}
}
void CTemCurveControl::OnSetSeriesLineWith(CTCHART_CURVE& mTchart, long CeriesIndex, long mLineWith)
{
	CSeries mSeries = mTchart.Series(CeriesIndex);
	CFastLineSeries mLines = mSeries.get_asFastLine();
	CPen1 mPen = mLines.get_LinePen();
	mPen.SetWidth(mLineWith);

}

  9、清除曲线(简单封装)

void CTemCurveControl::OnClearAllSeries(CTCHART_CURVE& mTchart)
{
	for (int i = 0; i < mTchart.get_SeriesCount(); i++)
	{
		((CSeries)(mTchart.Series(i))).Clear();
	}
}

10、面板颜色设置(简单封装) 

void CTemCurveControl::OnSetTeeChartPanelBackGroudColor(CTCHART_CURVE& mTeechar, COLORREF mPanelBkColor)
{
	CPanel   m_Panel = mTeechar.get_Panel();
	m_Panel.SetColor(mPanelBkColor);
}

 11、网格颜色设置(简单封装) 

void CTemCurveControl::OnSetTeechartAxisGridePenColor(CTCHART_CURVE& mTeechar, COLORREF Xaxis, COLORREF Yaxis)
{
	CAxes    m_Axis = mTeechar.get_Axis();
	CAxis    m_BottomXAxis = m_Axis.get_Bottom();
	CAxis    m_LeftYAxis = m_Axis.get_Left();
	CPen1	 mGridePendLeft   = m_LeftYAxis.get_GridPen();
	CPen1	 mGridePendBotton = m_BottomXAxis.get_GridPen();
	mGridePendLeft.SetColor(Xaxis);
	mGridePendBotton.SetColor(Yaxis);
}

  12、保存曲线(简单封装)

void CTemCurveControl::OnBnClickedButtonSaveTeechart()
{

	CString CFilePathName;
	CString mJpg, mTee, mBmp,mpdf;

	TCHAR szFilter[] = _T("JPG图片文件(.JPG)|*.JPG|文本文件(.txt)|*.txt|配置文件(.ini)|*.ini|word文件(.doc)|*.doc|曲线文件(.tee)|*.tee|位图文件(.bmp)|*.bmp|所有文件(*.*)|*.*||");
	CFileDialog dlg(FALSE, _T(""),_T("ReflowerTempretureCurve"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this,0, TRUE);

	CExport mSave = m_TemCurve.get_Export();
	if (dlg.DoModal() == IDCANCEL)
	{
		MessageBox(_T("保存文件已取消!"), _T("信息提示!"), MB_OK | MB_OKCANCEL | MB_ICONINFORMATION);
		return;
	}
	else 
	{
		switch (dlg.m_ofn.nFilterIndex)
		{
		case 1:
			CFilePathName = dlg.m_ofn.lpstrFile;
			CFilePathName = CFilePathName + dlg.m_ofn.lpstrDefExt;

			mSave.get_asJPEG();
			mSave.SaveToJPEGFile(CFilePathName, jpegBestQuality, 0, 100, 1023, 643);
			break;
		case 5:
			CFilePathName = dlg.m_ofn.lpstrFile;
			CFilePathName = CFilePathName + dlg.m_ofn.lpstrDefExt;

			mSave.SaveToFile(CFilePathName);
			break;
		case 6:
			CFilePathName = dlg.m_ofn.lpstrFile;
			CFilePathName = CFilePathName + dlg.m_ofn.lpstrDefExt;

			mSave.get_asBMP();
			mSave.SaveToBitmapFile(CFilePathName);
			break;
		case 7:
			CFilePathName = dlg.m_ofn.lpstrFile;
			CFilePathName.TrimRight(_T(".JPG"));
			CFilePathName = CFilePathName + dlg.m_ofn.lpstrDefExt;

		    mJpg = CFilePathName + _T(".JPG");
			mSave.get_asJPEG();
			mSave.SaveToJPEGFile(mJpg, jpegBestQuality, 0, 100, 1023, 643);

			mTee = CFilePathName + _T(".tee");
			mSave.SaveToFile(mTee);

			mBmp = CFilePathName + _T(".bmp");
			mSave.get_asBMP();
			mSave.SaveToBitmapFile(mBmp);

			//mSave.GetAsPDF();
			/*mpdf= CFilePathName + _T(".pdf");
			mExportPdf.SaveToFile(CFilePathName);*/
			break;
		default:
			break;
		}

	}
	/*GetSaveFileName(&dlg.m_ofn);
	dlg.GetFileExt();*/

	MessageBox(_T("温度曲线已保存到:") + CFilePathName + _T("目录下!"), _T("信息提示:"), MB_OK | MB_ICONINFORMATION);

}

   13、导入曲线(简单封装)//5.1导入导出PDF好像有问题,目前没有解决。

void CTemCurveControl::OnBnClickedButtonOpenTeechartFile()
{
	TCHAR szFilter[] = _T("曲线文件(.tee)|*.tee|文本文件(*.txt)|*.txt|所有文件(*.*|*.*||");
	CFileDialog fileDlg(TRUE, _T(""), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this, 0, TRUE);
	CString strFilePath;
	if (IDOK == fileDlg.DoModal())
	{
		strFilePath = fileDlg.GetPathName();
		CImport mImfile = static_cast<CImport> (m_TemCurve.get_Import());
		if (strFilePath!=_T(""))
		{
			mImfile.LoadFromFile(strFilePath);
		}
		else
		{
			printf("strFilePath = fileDlg.GetPathName(),获取文件名为空!\n");
			MessageBox(_T("要导入的文件为空,请选择曲线文件后再试!:"), _T("信息提示:"), MB_OK | MB_ICONINFORMATION);
			return;
		}
	}
}

VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

曲线导出功能,曲线导出可导出为BMP文件、JPG文件以及.tee文件。保存时选择所有类型能同时保存3种格式的文件。 

 VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

 VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

 曲线文件导入,Teechart的曲线文件名后缀为.tee。

 VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图

Teechart的曲线控件功能非常强大,此处不做过多详细的说明,只是告诉大家动态设置的一些方法,其他功能自己慢慢摸索即可。文章来源地址https://www.toymoban.com/news/detail-450913.html

到了这里,关于VS2019 MFC Teechart V5.1曲线控件使用方法Teechart Activex V5.1控件绘图控件 动态绘图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS2019 MFC CreateFontW 创建字体函数详细解读

    项目 2022/09/28 4 个参与者 反馈 CreateFont  函数创建具有指定特征的逻辑字体。 随后可将逻辑字体选为任何设备的字体。 C++复制 [in] cHeight 字体字符单元格或字符的高度(以逻辑单位为单位)。 字符高度值 (也称为 em 高度) 是字符单元格高度值减去内部前导值。 字体映射器按以

    2024年02月16日
    浏览(52)
  • 安装支持vs2019的MFC(解决MSBuild 错误 MSB8041、MSB8042)

    安装上述勾选内容后,即可解决MSBuild 错误 MSB8041 MSB8041:此项目需要 MFC/ATL 库。 https://learn.microsoft.com/zh-cn/visualstudio/msbuild/errors/msb8041?view=vs-2022 参考链接:https://blog.csdn.net/sanqiuai/article/details/124181979

    2024年02月15日
    浏览(56)
  • TeeChart图表控件许可常见问题解答

    Steema是全球领先的图表类控件公司,总部设在西班牙的巴塞罗那附近,Steema公司的VCL图表报表控件在全球拥有极高知名度。TeeChart可以在微软的Visual Studio、Office和.NET以及Java和PHP开发平台中使用,也可以作为本地Javascript-HTML5使用。 TeeChart for .NET是优秀的工业4.0 WinForm图表控件

    2024年02月09日
    浏览(47)
  • 记一次vs2019给MFC ListControl组件添加变量报错“未能返回新代码元素。可能语法错误。新元素名:x_xxxx”

    因一次项目给ListControl添加变量报错,解决后写下的该博客(查询到好多都是删除ncb文件的,浪费了很多时间)   具体为什么导致的这个情况,我也不太清楚(如果有大佬能科普一下,并告诉根本的解决方案就更好了),不过写代码的,都知道一切能点击的按钮都是对应的函数实现。

    2024年02月08日
    浏览(40)
  • MFC自定义控件使用

    用VS2005新建一个MFC项目,添加一个Custom Control控件在窗体 我们需要为自定义控件添加一个类。项目,添加类,MFC类 设置类名字,基类为CWnd,你也可以选择CDialog作为基类 类创建完成后,在它的构造函数中注册一个新的自定义窗体,取名为\\\"MyWindowClass\\\"

    2024年02月15日
    浏览(76)
  • MFC Tab 控件使用

      接下来两步,每个子对话框都要操作:    TCN_SELCHANGE 消息处理函数中添加代码如下:

    2024年02月08日
    浏览(41)
  • MFC创建和使用OCX控件

    2024年02月13日
    浏览(41)
  • MFC TabControl使用方法

    1.新建放置控件对话框 新建1个放置TabControl的Dialog主对话框,在此对话框中拖入1个TabControl控件,为控件绑定变量类型为:CTabCtrl,变量名为m_TabCtrl_Four。 2.新建子对话框并新建类 新建两个作为TabControl控件界面的Dialog子对话框,并为其新建两个对话框类。 3.设置子对话框属性

    2024年02月07日
    浏览(41)
  • MFC 对话框与控件的使用

    1、 熟悉 Windows 对话框应用程序开发的基本过程; 2、 学习标准控件的使用; 3、 学些 CommonDialog ActiveX 控件的使用; 4、 练习较复杂的交互式操作的控制流程; 5、 练习文件输入/输出流的使用。 实现一个具有一定实用价值的通讯录程序设计。界面如图所示 ①界面的基本设计

    2024年02月05日
    浏览(42)
  • 【MFC】03.常用复杂控件的使用-笔记

    对话框-类向导:初始化函数中,热键需要在最开始的时候就注册进去: 注册热键: 在这之前,先去定义一个宏,代表你这个快捷键。 相应消息: 类向导-添加消息处理:WM_HOTKY消息 全局消息钩子:在所有页面上都可以使用该热键 给空间添加变量m_IP 设置 清除: 获取 添加变

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包