程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 深入淺出CChart 每日一課——第十一課 分層視圖,樓上七班的女孩

深入淺出CChart 每日一課——第十一課 分層視圖,樓上七班的女孩

編輯:關於C語言

在Origin等成熟的商業軟件中,分層功能對於具有多個比例尺的圖像繪制來說,是必不可少的。

CChart目前包含了兩種具有分層功能的視圖。一種名字就叫分層視圖,這種視圖所有圖層共享繪圖區域,每個圖層單獨繪制自己的坐標軸。另一種的名字叫共享X軸視圖,這種視圖的所有圖層除了共享繪圖區域外,X坐標軸也是共享的,每個圖層單獨繪制自己的Y軸。

本節課先介紹分層視圖。

按照第一課的方式建立一個VC6項目,名為Lesson11。對於WM_CREATE的響應例程,如下填寫。

case WM_CREATE:
	chartWnd.Attach(hWnd, kTypeLayered);
	chartWnd.GetChart()->ResizePlots(2);
	double pX[200], pY[200];
	int i;
	for(i=0; i<200; i++)
	{
		pX[i] = i+1;
		pY[i] = (i+1)*(i+1);
	}
	chartWnd.GetChart()->AddCurve(pX, pY, 200, 0);
	for(i=0; i<200; i++)
	{
		pX[i] = (i+1)*10;
		pY[i] = sin(i*2.0*3.1415926536/200.0);
	}
	chartWnd.GetChart()->AddCurve(pX, pY, 200, 1);

	chartWnd.GetChart()->SetTitle(_T("圖層1"),0);
	chartWnd.GetChart()->SetTitle(_T("圖層2"),1);
	break;
 

分層視圖的代號是kTypeLayered。

上圖中又出現了一個函數ResizePlots,這個函數在上一課也出現過。本課中ResizePlots函數的定義為:

void		ResizePlots(int nLayers);
 


這個函數非常好理解,其參數nLayers表示圖層數量。

上面的代碼中設置了兩個圖層。

由於前面使用了數學庫的正弦函數,請在Lesson11.cpp的頭部加上頭文件的引用。

#include <math.h>
 


運行程序,效果如圖。

SouthEast

我們看到,比例尺差別非常大的兩條曲線繪制到同一張圖上了。

注意目前笨笨區分不同圖層的方式是顏色,同一圖層所有圖元,包括標題、曲線、坐標軸的顏色都一樣。

同學們可以用鼠標試試分層視圖的交互功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved