m_chart.SetColumnCount(2);
m_chart.GetPlot().GetSeriesCollection().GetItem(1).GetSeriesMarker().SetShow(TRUE);
//m_chart.GetPlot().GetSeriesCollection().GetItem(2).GetSeriesMarker().SetShow(TRUE); m_chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetStyle(0); //0不连接,1连接
//m_chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().SetStyle(0); m_chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().GetVtColor().Set(255, 0, 0);
m_chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetWidth(1); //赋值数据
int nRowCount = 5;
m_chart.SetRowCount(nRowCount);
m_chart.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints().GetItem(-1).GetMarker().SetStyle(1); srand( (unsigned)time( NULL ) ); for(int row = 1; row <= nRowCount; ++row)
{
m_chart.SetRow(row);
m_chart.GetDataGrid().SetData(row, 1, row*2, 0);
//m_chart.GetDataGrid().SetData(row, 2, rand() * 100 / RAND_MAX, 0);
} 问题1,为什么我的点是十字交叉的,而且又大,有没改变的方法。
问题2, m_chart.SetColumnCount(2); 按曲线方式,这是两条曲线,当我设置m_chart.SetColumnCount(1);的时候,整个mschart空间不显示X,Y轴了,只有背景色。
问题3, m_chart.GetDataGrid().SetData(row, 1, row*2, 0); 是什么意思?
SetData(short Row, short Column, double DataPoint, short nullFlag)这是函数参数,看意思四个参数分别是是x轴,y轴,值,设置。我用的时候怎么好奇怪,散点不按想法排列
解决方案 »
- VC6:加个 m_变量 就不认类了!
- 一种调用静态库时报链接错误如何解决
- 请高手帮帮忙啊,CoCreateInstance出现了问题,很急啊
- 有谁给一个学习COM的步骤:哪些是重点,哪些可以忽略,哪些知道原理就行...
- 求助:在CScrollView类下点击一个菜单画图,但滚动后没了,再点菜单,则有重叠区域。
- VC中数据库应用程序中关于类的一个问题(苦恼),请高手帮忙解答
- 今天在CSDN收到一个奇怪的、莫名奇妙的短消息。。。
- 利用event进行线程同步处理
- CDockablePane 如何修改背景颜色
- 请问如何VC++压缩和解压缩一个文件(不调用第3方软件)。
- 学习了线程编程和dll后,求练习的东西
- 100分求解 聊天室服务器处理思路
m_chart.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints().GetItem(-1).GetMarker().SetStyle(14); //4是圆圈,1十字,0,横杠,2是叉,3是星,5是方块,6菱形
//7三角,8倒三角,9实心点,10实心方块,11实心菱形,12实心三角,13,实心倒三角,14泛光的点
第二问题
如果对于m_chart.SetChartType(3);来说m_Chart.SetColumnCount(4)表示是要显示4条曲线。但是对于16的散点类型来说,显示是2组坐标点。可以知道曲线形式的横坐标更本没有数据,只是通过标签来贴上去的。
因此在16类型最少要m_Chart.SetColumnCount(2),如果只是1的话整个坐标都不会显示,16的特性就是显示坐标点,必须要1组数据。而不是一个Y轴,X轴贴标签的那种方式。第三个问题 散点赋值方式,和曲线赋值方式有些差异void CpointDlg::UpdateChart()
{
VARIANT vt;
SAFEARRAY* pSA;
SAFEARRAYBOUND sab[2]; //2维
sab[0].lLbound = sab[1].lLbound = 0;
sab[0].cElements = 5; //点的数量
sab[1].cElements = 2; //0 x坐标,1 y坐标
pSA = SafeArrayCreate( VT_R4, 2, sab); HRESULT hr;
long saIdx[2]; //saIdx[0]表示第几个,saIdx[1]表示是这个点的Y赋值还是X
for(int i = 0; i<5; i++) {
saIdx[0] = i;
float fout;
saIdx[1] = 0;
fout = float(i+ 2)*0.2; //第i个点的X赋值
hr = SafeArrayPutElement( pSA, saIdx, &fout); saIdx[1] = 1;
fout = i*0.1 +0.6f; //第i个点的Y赋值
hr = SafeArrayPutElement( pSA, saIdx, &fout);
ASSERT( SUCCEEDED(hr));
} vt.vt = VT_ARRAY|VT_R4;
vt.parray = pSA;
m_chart.SetChartData( vt);}
好了,来个人吧,我结贴给分,太可怜了,一个人唱独角戏。