在第三課中,笨笨向大家展示了CChart繪制等高線圖的功能,用很少的代碼就實現了等高線圖。
這一課用CChart的雲圖功能把第三課的等高線圖修改成雲圖。
按照第一課的方法建立一個VC6工程Lesson13。
在文件Lesson13.cpp中WndProc函數的前面,建立雲圖的場函數。這裡先選擇函數和第三課的函數相同。
double f(double x, double y) { return 1.0/((x-1.0)*(x-1.0)+y*y+1.0); }
修改WM_CREATE的響應函數如下。
case WM_CREATE: chartWnd.Attach(hWnd, kTypeContourMap); chartWnd.GetChart()->SetFieldFcn(f); { double xRange[2], yRange[2]; xRange[0] = -2.0; xRange[1] = 2.0; yRange[0] = -2.0; yRange[1] = 2.0; chartWnd.GetChart()->SetPlotRange(xRange, yRange); } chartWnd.GetChart()->SetTitle(_T("測試雲圖")); break;
這裡的代碼似曾相識喲,呵呵。
很容易發現,這裡的代碼和第三課相比,除了最後設置標題的那一行外,只有第一句有變化,把kTypeContourLine改成了kTypeContourMap,而後者正是雲圖的代號。
運行程序,效果如圖。
雲圖的顏色比較絢爛,效果的確要比等高線圖好一點,呵呵。
雲圖的圖例和前面課程中看到的不一樣,這是一個漸變的顏色棒。
下面我們把雲圖場函數修改一下,讓它有兩個極大值點,看看CChart顯示的結果對不對。
double f(double x, double y) { return 1.0/((x-1.0)*(x-1.0)+y*y+1.0) + 1.0/((x+1.0)*(x+1.0)+y*y+1.0); }
運行效果如圖。
如同我們的預期,現在的圖像中有兩個極大值點。
本節課笨笨給同學們介紹了CChart的雲圖功能。雲圖和前面介紹的等高線圖各有特色。其實笨笨還實現了一種視圖,把等高線圖和雲圖結合在一起,當然這就完美了。這種新視圖在這裡就不詳述了。