转载请注明出处!

1,添加ChartDirector中中的包括库

2,添加ChartDirector中中的LIB库

31,添加ChartDirector中中的LIB库

如图4所示,添加ChartViewer类。

5,添加声明#include “ChartViewer.h” 。

6.添加PICTURE控件,不需要变量,添加画2D图函数

void CChartDirectorDlg :: OnBnClickedBtnDraw()

{

// TODO:在此添加控件通知处理程序代码

double data0 [] = {42,49,33,38,51,46,29,41,44,57,59,52,37,34,51,56,56,60,70,

76,63,67,75,64,51};

// double data1 [] = {50,55,47,34,42,49,63,62,73,59,56,50,64,60,67,67,58,59,73,

// 77,84,82,80,84,98};

// double data2 [] = {36,28,25,33,38,20,22,30,25,33,30,24,28,15,21,26,46,42,48,

// 45,43,52,64,60,70};

//折线图的标签

const char * labels [] = {“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10 “” 11“” 12“ ,

“13”,“14”,“15”,“16”,“17”,“18”,“19”,“20”,“21”,“22”,“23”,“24”};

//创建一个尺寸为600 x 300像素的XYChart对象,背景为浅蓝色(EEEEFF),

//黑色边框,1个pxiel 3D边框效果和圆角

XYChart * c =新的XYChart(900,300,00eeeeff,0x000000,1);

C-> setRoundedFrame();

//将plotarea设置为(55,58),大小为520 x 195像素,白色背景。打开

//水平和垂直网格线,浅灰色(0xcccccc)

c-> setPlotArea(55,58,820,195,0xffffff,-1,-1,0xcccccc,0xcccccc);

//使用水平布局在(50,30)(图表顶部)添加图例框。使用9pt Arial Bold

//字体将背景和边框颜色设置为透明。

c-> addLegend(50,30,false,“arialbd.ttf”,9) - > setBackground(Chart :: Transparent);

//使用15pt Times Bold Italic字体在浅蓝色(CCCCFF)上为图表添加标题框

//背景与玻璃效果。暗红色(从0x800000)背景上的白色(0XFFFFFF),带有1

//像素3D边框。

c-> addTitle(“Application Server吞吐量”,“timesbi.ttf”,15) - > setBackground(0xccccff,

0x000000,Chart :: glassEffect());

//为ÿ轴添加标题

c-> yAxis() - > setTitle(“每小时MBytes”);

//在X轴上设置标签。

c-> xAxis() - > setLabels(StringArray(labels,(int)(sizeof(labels)/ sizeof(labels [0]))));

//在X轴上显示3个标签中的1个。

C-> x轴() - > setLabelStep(3);

//为X轴添加标题

c-> xAxis() - > setTitle(“2006年6月12日”);

//在图表中添加线图层

LineLayer * layer = c-> addLineLayer();

//将默认线宽设置为2像素

第一层> setLineWidth(2);

//将三个数据集添加到线图层。出于演示目的,我们使用虚线颜色

//最后一行

layer-> addDataSet(DoubleArray(data0,(int)(sizeof(data0)/ sizeof(data0 [0]))),0xff0000,

“服务器#1”);

// layer-> addDataSet(DoubleArray(data1,(int)(sizeof(data1)/ sizeof(data1 [0]))),0x008800,

//“服务器#2”);

// layer-> addDataSet(DoubleArray(data2,(int)(sizeof(data2)/ sizeof(data2 [0]))),c-> dashLineColor(

// 0x3333ff,Chart :: DashLine),“Server#3”);

//输出图表

C-> makeChart(“multiline.png”);

m_image.Destroy();

m_image.Load(_T(“multiline.png”));

CRect rectControl; //控件矩形对象

CRect rectPicture; //图片矩形对象

CWnd * pWnd = GetDlgItem(IDC_PIC);

pWnd-> GetClientRect(rectControl);

CDC * pDc = GetDlgItem(IDC_PIC) - > GetDC();

SetStretchBltMode(pDc-> m_hDC,STRETCH_HALFTONE);

rectPicture = CRect(rectControl.TopLeft(),CSize((int)rectControl.Width(),(int)rectControl.Height()));

((静态控件*)函数GetDlgItem(IDC_PIC)) - > SetBitmap(NULL);

m_image.Draw(pDc-> m_hDC,rectPicture);

pWnd-> ReleaseDC(PDC);

//释放资源

删除℃;

}

7.添加PICTURE控件,不需要变量,添加画3D图函数

void CChartDirectorDlg :: OnBnClickedBtnDraw3d()

{

// TODO:在此添加控件通知处理程序代码

CFileDialog fileDlg(TRUE,_T(“png”),NULL,0,_T(“图像文件(* .bmp; * .jpg; * .png)| * .JPG; * .PNG; * .BMP |所有文件(*。*)| *。* ||“),这个);

fileDlg.DoModal();

//获取图片路径和图片名称

CString strFilePath = fileDlg.GetPathName();

CString strFileName = fileDlg.GetFileName();

//判断路径不为空

if(strFilePath == _T(“”))

{

返回;

}

CImage m_Img;

m_Img.Destroy();

m_Img.Load(strFilePath);

/

int w = m_Img.GetWidth();

int h = m_Img.GetHeight();

double * x = new double [w];

double * y = new double [h];

double * z = new double [w * h];

byte * pDataDst =(byte *)m_Img.GetBits(); //获取指向图像数据的指针

int pitchDst =(m_Img.GetPitch()); //获取每行图像占用的字节数+:自上而下; - :自下而上的DIB

int bitCountDst = m_Img.GetBPP()/ 8; //获取每个像素占用的字节数

for(int i = 0; 我<h; 我++)//行

{

y [i] = i;

for(int j = 0; j <w; j ++)//列

{

x [j] = j;

z [i * w + j] = *(pDataDst +((pitchDst <0)?(pitchDst *(h-1-i)):( pitchDst * i))+ j * bitCountDst);

}

}

SurfaceChart * c = new SurfaceChart(w,h / *,Chart :: brushedSilverColor(),0x888888 * /);

c-> setRoundedFrame(0xffffff,20,0,20,0);

c-> setPlotRegion(w / 2,5 * h / 10,0.8 * w,0.6 * h,600);

// c-> setPlotRegion(w / 2,h / 2,640,480,300);

//将高程和旋转角度设置为45和-45度

C-> setViewAngle(50,0);

//将透视级别设置为30

C->的的setPerspective(20);

c-> setInterpolation(40,40); // !!!

c-> setData(DoubleArray(x,w),DoubleArray(y,h),DoubleArray(z,w * h));

// c-> setData(DoubleArray(x,w),DoubleArray(y,h),DoubleArray(z,w * h));

//添加右上角锚定在(660,80)的颜色轴(图例)设置。

//长度为200像素,右侧为标签。

// ColorAxis * cAxis = c-> setColorAxis(w,80,Chart :: TopRight,350,Chart :: Right);

//将曲面网格线设置为半透明黑色(cc000000)

C-> setSurfaceAxisGrid(0xcc000000);

//将轮廓线设置为半透明白色(80ffffff)

C-> setContourColor(0x80ffffff);

//将墙壁设置为黑色

C-> setWallColor(0x000000处);

//将壁厚设置为0

c-> setWallThickness(0,0,0);

//仅显示XY墙,并隐藏YZ和ZX墙。

// c-> setWallVisibility(false,false,false);

c-> setWallVisibility(true,true,true);

c-> xAxis() - > setLinearScale(0,w,50);

c-> yAxis() - > setLinearScale(0,h,50);

c-> zAxis() - > setLinearScale(0,255,30);

//输出图表

C-> makeChart(“tem3d.png”);

// Mat m_3DImage = imread(“tem3d.png”);

//

// m_3DPic.SetImgInfo(m_3DImage);

m_image.Destroy();

m_image.Load(_T(“tem3d.png”));

CRect rectControl; //控件矩形对象

CRect rectPicture; //图片矩形对象

CWnd * pWnd = GetDlgItem(IDC_3DPIC);

pWnd-> GetClientRect(rectControl);

CDC * pDc = GetDlgItem(IDC_3DPIC) - > GetDC();

SetStretchBltMode(pDc-> m_hDC,STRETCH_HALFTONE);

rectPicture = CRect(rectControl.TopLeft(),CSize((int)rectControl.Width(),(int)rectControl.Height()));

((静态控件*)函数GetDlgItem(IDC_3DPIC)) - > SetBitmap(NULL);

m_image.Draw(pDc-> m_hDC,rectPicture);

pWnd-> ReleaseDC(PDC);

删除℃;

删除[] x;

删除[] y;

删除[] z;

}

8运行结果

ChartDirector画2D,3D图,MFC画图相关推荐

  1. Web图表开发--用ChartDirector画证券走势图

    最近给客户做一个B/S架构的证券交易大屏幕软件,其中用到对证券指数的走势以及成交量的图形绘制,由于客户要求图形的清晰而且要做成于原来的老系统一样的图形显示效果,就试着用ChartDirector进行图 ...

  2. python 3d图

    首先在进行 3D Plot 时除了导入 matplotlib ,还要额外添加一个模块,即 Axes 3D 3D 坐标轴显示: 之后要先定义一个图像窗口,在窗口上添加3D坐标轴,显示成下图: impor ...

  3. python画3d图-python之画三维图像

    一:利用的包: (1)构建三维对象:mpl_toolkits.mplot3d里面导入Axes3D (2)数据方面操作:numpy (3)绘图工具包:matplotlib.pyplot 二:绘图: 1. ...

  4. catia怎样倒2d_CATIA的3D图怎么完美转换成CAD的2D工程图

    将二维图形导入到零件,注意导入的视图放在对应的基准面上,产生联系,再跟据视图的信息逐一生成特征,不是导入三给图形就能自动给你生成三维图的,要自己根椐二维图画的,三维零件2113-->机械设计-- ...

  5. 【巨人的肩膀上制造世界】——10——Unity3D实用插件之Vectrosity,轻松便捷的实现2D/3D画线功能

    [巨人的肩膀上制造世界]--10--Unity3D实用插件之Vectrosity,轻松便捷的实现2D/3D画线功能 目录 1.博客介绍 2.内容 (1)编辑器预制线条 (2)编辑器修改线条 (3)线条 ...

  6. 人体姿态估计中的可视化---画出预测关节位置3D图和地面真实图

    根据模型预测关节位置和真实关节位置画3维图 import pickle import tensorflow as tfimport matplotlib matplotlib.use('TkAgg') ...

  7. matplotlib3d柱状图_Matplotlib——画图(散点图、柱状图、等高线图、3D图)

    文章目录1.画散点图2.画柱状图3.等高线图4.image图5.画3D图 1.画散点图 首先,先引入matplotlib.pyplot简写作plt,再引入模块numpy用来产生一些随机数据.生成100 ...

  8. Python画图实战之画K线图【附带自动下载股票数据】

    关于Python画图的基本知识可以先查看下面这篇文章Python画图(直方图.多张子图.二维图形.三维图形以及图中图)https://blog.csdn.net/weixin_41896770/art ...

  9. Matplotlib——画图(散点图、柱状图、等高线图、3D图)

    文章目录 1.画散点图 2.画柱状图 3.等高线图 4.image图 5.画3D图 1.画散点图 首先,先引入matplotlib.pyplot简写作plt,再引入模块numpy用来产生一些随机数据. ...

  10. 高解析APNG(动画PNG). 2D. 3D APNG's的动态图

      PNG 动画 互联网发展了这么多年,通用动画格式仍旧只有 GIF 一种.我们做合成图时,想弄成GIF却发现会失真...GIF只能支持 256 色,没有 full alpha 通道. 2004 年, ...

最新文章

  1. 浅谈Android四大组件之Service
  2. 【Linux】一步一步学Linux——iptables-save命令(187)
  3. 基于TCP实现双向通信对话功能
  4. Intellij IDEA中maven更新不下来pom中的jar包,reimport失效
  5. 【LeetCode】【HOT】226. 翻转二叉树(递归)
  6. linux 版本号 加号,如何去除Linux Kernel版本号后面的加号?
  7. 引进博士:130平米住房+20万经费+15万年薪;硕士24万引进费+可聘讲师
  8. 安装算量软件使用_鹏业安装算量软件常用按钮汇总(三)
  9. ajax传参遇到问题
  10. 讯飞AIUI集成语音语义的21003错误
  11. ae表达式修复_AE中常见表达式错误修改解决方法
  12. 3-3存储系统-高速缓冲存储器Cache
  13. 织梦dedecms 仿制目标网站首页
  14. 简单句、并列句、复合句、got his wish、 owe you
  15. 商务翻译证,高级商务翻译证
  16. 遗传算法入门(连载1-10)
  17. Python生成中国股市交易日列表
  18. Handler消息Message屏障消息
  19. Spring 如何解决循环依赖的问题
  20. pyqt5 点击开始执行_pyqt5实现开始按钮开始一个循环,结束按钮结束循环

热门文章

  1. idea swagger生成接口文档_.NetCore3.1中使用Swagger生成接口文档
  2. 数据挖掘肿瘤预测_给你一个基因,利用数据挖掘能做什么?
  3. jenkins war包_Jenkins 集成postman 自动化运行接口测试用例
  4. apache如何加载系统环境变量_游学电子:windows10系统如何用cmd指令设置环境变量...
  5. mysql自连接_深入理解mysql的自连接和join关联
  6. python清除数据库表命令_数据库----Python操作数据库
  7. 陆振波的svm的matlab代码的解释,陆振波SVM的MATLAB代码解释
  8. CMU 15-213 Introduction to Computer Systems学习笔记(5) Machine-Level Programming-Control
  9. linux date命令 下月,Linux date命令用法和使用技巧(获取今天.昨天.一分钟前等)
  10. android多音字排序,再谈Contacts中姓氏多音字排序错误问题