田慕晨
摘要:SDK中集成了多種繪圖函數(shù),給Windows編程人員提供了便利。本文將針對其中四種(Polyline,PolyPolyline,Polygon,PolyPolygon)作詳細說明,并對比其調(diào)用方法和實現(xiàn)功能的不同。并提供自己編寫這四種函數(shù)的思路,經(jīng)試驗,效果與SDK中函數(shù)效果基本一致。
關(guān)鍵詞:SDK;繪圖函數(shù);Windows編程
一、Polyline
頂點數(shù)組有7個元素,分別是一個三角形的三個頂點,一個方形的四個頂點(其余函數(shù)測試都使用同一個頂點數(shù)組)。調(diào)用Polyline,Polyline只能畫一條折線,即將7個頂點依次連接,若頂點個數(shù)參數(shù)設(shè)為3,則只連頂點數(shù)組的前三個點。
二、PolyPolyline
PolyPolyline可以畫多條折線。設(shè)定好PolyPolyline的每條線頂點個數(shù)數(shù)組為{3,4},則前3個點和后4個點分別被連成兩條線。
三、Polygon
Polygon畫一個閉合的多邊形并填色。首先此函數(shù)將7個點連接并自動將最后一個點和第一個點相連形成閉合圖形,再填色。
四、PolyPolygon
PolyPolygon畫多個多邊形并填色。與PolyPolyline一樣,設(shè)定好一個多邊形用幾個頂點和多邊形個數(shù)的參數(shù),PolyPolygon連接第一組頂點,首尾相連并填充,再連接第二組頂點,首尾相連并填充。
五、編寫繪圖函數(shù)
1.MyPolyline
仿照Polyline的參數(shù)和返回,三個參數(shù)分別是hdc,CONST POINT *apt(POINT類型數(shù)組地址,頂點數(shù)組信息),csz(頂點個數(shù)),返回空。
數(shù)組地址apt為數(shù)組內(nèi)第一個元素的地址,可以直接apt+i使指針在數(shù)組內(nèi)移動。由于數(shù)組是結(jié)構(gòu)體類型的,可以以地址訪問結(jié)構(gòu)體內(nèi)成員,即apt->y。
函數(shù)編寫思路簡單,先用MoveToEx函數(shù)把畫筆放到第一個頂點處,再for循環(huán)頂點個數(shù)-1次,每次都LineTo下一個頂點。
2.MyPolyPolyline
仿照PolyPolyline的參數(shù)和返回,四個參數(shù)分別是hdc,CONST POINT *apt(POINT類型數(shù)組地址,頂點數(shù)組信息),CONST DWORD *asz(DWORD類型數(shù)組地址,每條折線的頂點個數(shù)),DWORD csz(折線條數(shù)),返回空。
apt使用與Polyline相同。asz也是數(shù)組地址,也表示該數(shù)組第一個元素的地址,但這個數(shù)組里的元素不是結(jié)構(gòu)體,要用*取出,asz+i指針移動,*(asz + i)取出指針指向的元素值。
函數(shù)體是一個兩層嵌套的for循環(huán),循環(huán)前先定義i、j都為0,i控制指向頂點數(shù)組里第幾個點,j控制在畫第幾條線。第一層循環(huán)是折線條數(shù)循環(huán),循環(huán)折線條數(shù)次,MoveToEx把筆抬起放到下一個起始頂點,并讓i++,讓內(nèi)層循環(huán)從下一個點開始連。內(nèi)層循環(huán)是每條線內(nèi)的頂點連線循環(huán),循環(huán)次數(shù)由asz數(shù)組內(nèi)的值決定。也可以內(nèi)層調(diào)Polyline實現(xiàn)。3.MyPolyPolygon
仿照PolyPolyline的參數(shù)和返回,四個參數(shù)分別是hdc,CONST POINT *apt(POINT類型數(shù)組地址,頂點數(shù)組信息),CONST INT *asz(INT類型數(shù)組地址,每條折線的頂點個數(shù)),DWORD csz(折線條數(shù)),返回空。
使用均同MyPolyPolyline。
函數(shù)體是一個for循環(huán),循環(huán)內(nèi)調(diào)用Polygon。Polygon的頂點數(shù)組參數(shù)是apt + i,i每次循環(huán)完加asz數(shù)組中這個多邊形的頂點數(shù),apt + i就移動到下一個多邊形的第一個頂點處;Polygon的頂點數(shù)參數(shù)是*(asz+j)),j每次循環(huán)加1,即依次遍歷asz數(shù)組的值。
參考文獻
[1]云昌欽,袁灝.Microsoft Windows環(huán)境與編程基礎(chǔ)[Z].
(作者單位:山東大學(威海)通信工程)