EasyX指導(dǎo)手冊_第1頁
EasyX指導(dǎo)手冊_第2頁
EasyX指導(dǎo)手冊_第3頁
EasyX指導(dǎo)手冊_第4頁
EasyX指導(dǎo)手冊_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、EasyX指導(dǎo)手冊制作人:jianxiawzx一、基本概念1.1顏色EasyX使用24bit真彩色,不再支持調(diào)色板模式。表示顏色有以下幾種辦法:1.用預(yù)定義顏色常量,如下:常量值顏色常量值顏色BLACK0黑DARKGRAY0x545454深灰BLUE0xA80000藍(lán)LIGHTBLUE0xFC5454亮藍(lán)GREEN0x00A800綠LIGHTGREEN0x54FC54亮綠CYAN0xA8A800青LIGHTCYAN0xFCFC54亮青RED0x0000A8紅LIGHTRED0x5454FC亮紅MAGENTA0xA800A8紫LIGHTMAGENTA0xFC54FC亮紫BROWN0x0054A8

2、棕YELLOW0x54FCFC黃LIGHTGRAY0xA8A8A8淺灰WHITE0xFCFCFC白2.用16進(jìn)制的顏色表示,形式為:0xbbggrr(bb=藍(lán),gg=綠,rr=紅)3.用RGB宏合成顏色。詳見RGB。4.用HSLtoRGB、HSVtoRGB轉(zhuǎn)換其他色彩模型到RGB顏色。詳見HSLtoRGB、HSVtoRGB。示例:以下是部分設(shè)置前景色的方法:setcolor(0xff0000);setcolor(BLUE);setcolor(RGB(0,0,255);setcolor(HSLtoRGB(240,1,0.5);1.2坐標(biāo)在EasyX中,坐標(biāo)分兩種:邏輯坐標(biāo)和物理坐標(biāo)。邏輯坐標(biāo)邏輯

3、坐標(biāo)是在程序中用于繪圖的坐標(biāo)體系。坐標(biāo)默認(rèn)的原點在屏幕的左上角,X軸向右為正,Y軸向下為正,度量單位是象素。坐標(biāo)原點可以通過setorigin()函數(shù)修改;坐標(biāo)軸方向可以通過setaspectratio()函數(shù)修改;縮放比例可以通過setaspectratio()函數(shù)修改。在本手冊中,凡是沒有注明的坐標(biāo),均指邏輯坐標(biāo)。物理坐標(biāo)物理坐標(biāo)是描述設(shè)備的坐標(biāo)體系。坐標(biāo)原點在屏幕的左上角,X軸向右為正,Y軸向下為正,度量單位是象素。坐標(biāo)原點、坐標(biāo)軸方向、縮放比例都不能改變。1.3設(shè)備所謂“設(shè)備”,簡單來說,就是繪圖表面。在EasyX中,設(shè)備分兩種,一種是默認(rèn)的繪圖窗口,另一種是IMAGE對象。通過Set

4、WorkingImage()函數(shù)可以設(shè)置當(dāng)前用于繪圖的設(shè)備。設(shè)置當(dāng)前用于繪圖的設(shè)備后,所有的繪圖函數(shù)都會繪制在該設(shè)備上。二、繪圖函2.1.1clearcliprgn這個函數(shù)用于清空裁剪區(qū)的屏幕內(nèi)容。voidclearcliprgn();2.1.2cleardevice這個函數(shù)用于清除屏幕內(nèi)容。具體的,是用當(dāng)前背景色清空屏幕,并將當(dāng)前點移至(0,0)。voidcleardevice();2.1.3closegraph這個函數(shù)用于關(guān)閉圖形環(huán)境。voidclosegraph();2.1.4getaspectratio這個函數(shù)用于獲取當(dāng)前縮放因子。voidgetaspectratio(float*px

5、asp,float*pyasp);參數(shù):pxasp返回x方向上的縮放因子。pyasp返回y方向上的縮放因子。2.1.5GetHWnd這個函數(shù)用于獲取繪圖窗口句柄。HWNDGetHWnd();在Windows下,句柄是一個窗口的標(biāo)識,得到句柄后,可以使用WindowsSDK中的各種命令實現(xiàn)對窗口的控制。示例:/獲得窗口句柄HWNDhWnd=GetHWnd();/使用API函數(shù)修改窗口名稱SetWindowText(hWnd,Hello!);2.1.6graphdefaults這個函數(shù)用于重置視圖、當(dāng)前點、繪圖色、背景色、線形、填充類型、字體為默認(rèn)值。voidgraphdefaults();2.1

6、.7initgraph這個函數(shù)用于初始化繪圖環(huán)境。HWNDinitgraph(intWidth,intHeight,intFlag=NULL);參數(shù):Width繪圖環(huán)境的寬度。Height繪圖環(huán)境的高度。Style繪圖環(huán)境的樣式,默認(rèn)為NULL。可為以下值:值含義SHOWCONSOLE表示可以保留原控制臺窗口。2.1.8setaspectratio這個函數(shù)用于設(shè)置當(dāng)前縮放因子。voidsetaspectratio(floatxasp,floatyasp);參數(shù):Xaspx方向上的縮放因子。例如繪制寬度為100的矩形,實際的繪制寬度為100*xasp。Yaspy方向上的縮放因子。例如繪制高度為1

7、00的矩形,實際的繪制高度為100*yasp。說明:如果縮放因子為負(fù),可以實現(xiàn)坐標(biāo)軸的翻轉(zhuǎn)。例如,執(zhí)行setaspectratio(1,-1);后,可使y軸向上為正。2.1.9setcliprgn這個函數(shù)用于設(shè)置當(dāng)前繪圖設(shè)備的裁剪區(qū)。voidsetcliprgn(HRGNhrgn);參數(shù):hrgn區(qū)域的句柄。創(chuàng)建區(qū)域所使用的坐標(biāo)為物理坐標(biāo)。如果該值為NULL,表示取消之前設(shè)置的裁剪區(qū)。說明:HRGN是Windows定義的表示區(qū)域的句柄。將該區(qū)域設(shè)置為裁剪區(qū)后,任何區(qū)域外的繪圖都將無效(但仍然可以通過操作顯存在裁剪區(qū)外繪圖)??梢允褂肳indowsGDI函數(shù)創(chuàng)建一個區(qū)域。例如,創(chuàng)建矩形區(qū)域可以使

8、用函數(shù):HRGNCreateRectRgn(intleft,inttop,intright,intbottom);此外,還可以使用函數(shù)CreateEllipticRgn創(chuàng)建橢圓形的區(qū)域,使用CreatePolygonRgn創(chuàng)建多邊形的區(qū)域等等。還可以使用CombineRgn組合區(qū)域。更多關(guān)于區(qū)域的GDI函數(shù),請參考MSDN中的RegionFunctions。注意:創(chuàng)建區(qū)域后,如果不再使用,請執(zhí)行DeleteObject(HRGNhrgn)以釋放該區(qū)域?qū)?yīng)的系統(tǒng)資源。示例:以下代碼用于創(chuàng)建一個矩形裁剪區(qū),并在該裁剪區(qū)內(nèi)畫圓,請觀察裁剪效果:#include#includevoidmain()/初

9、始化繪圖窗口initgraph(640,480);/創(chuàng)建一個矩形區(qū)域HRGNrgn=CreateRectRgn(100,100,200,200);/將該矩形區(qū)域設(shè)置為裁剪區(qū)setcliprgn(rgn);/不再使用rgn,清理rgn占用的系統(tǒng)資源DeleteObject(rgn);/畫圓,受裁剪區(qū)影響,只顯示出四段圓弧circle(150,150,55);/取消之前設(shè)置的裁剪區(qū)setcliprgn(NULL);/畫圓,不再受裁剪區(qū)影響,顯示出一個完整的圓circle(150,150,60);/按任意鍵退出getch();closegraph();2.1.10setorigin這個函數(shù)用于設(shè)置坐

10、標(biāo)原點。voidsetorigin(intx,inty);x原點的x坐標(biāo)(使用物理坐標(biāo))。y原點的y坐標(biāo)(使用物理坐標(biāo))。2.2顏色表示及相關(guān)函數(shù)2.2.1相關(guān)函數(shù)和數(shù)據(jù)如下:函數(shù)或數(shù)據(jù)描述getbkcolor獲取當(dāng)前繪圖背景色。getcolor獲取當(dāng)前繪圖前景色GetBValue返回指定顏色中的藍(lán)色值。GetGValue返回指定顏色中的綠色值。GetRValue返回指定顏色中的紅色值。HSLtoRGB轉(zhuǎn)換HSL顏色為RGB顏色。HSVtoRGB轉(zhuǎn)換HSV顏色為RGB顏色。RGB通過紅、綠、藍(lán)顏色分量合成顏色。RGBtoGRAY轉(zhuǎn)換RGB顏色為灰度顏色。RGBtoHSL轉(zhuǎn)換RGB顏色為HSL顏

11、色。RGBtoHSV轉(zhuǎn)換RGB顏色為HSV顏色。setbkcolor設(shè)置當(dāng)前繪圖背景色。setcolor設(shè)置當(dāng)前繪圖前景色。BGR交換顏色中的紅色和藍(lán)色。2.2.2BGRBGR宏用于交換顏色中的紅色和藍(lán)色。COLORREFBGR(COLORREFcolor);參數(shù):color需要交換紅色和藍(lán)色的顏色。返回值:返回交換紅色和藍(lán)色后的顏色。說明:顏色在內(nèi)存中的表示形式為:0xbbggrr(bb=藍(lán),gg=綠,rr=紅),但是顯存中的顏色表現(xiàn)形式為0xrrggbb。注意,兩者的紅色和藍(lán)色是相反的。直接操作顯存時,可以通過BGR宏交換顏色的紅色和藍(lán)色部分。2.2.3getbkcolor這個函數(shù)用于獲取

12、當(dāng)前繪圖背景色。COLORREFgetbkcolor();2.2.4GetBValueGetBValue宏用于返回指定顏色中的藍(lán)色值。BYTEGetBValue(COLORREFrgb);參數(shù):rgb指定的顏色。返回值:指定顏色中的藍(lán)色值,值的范圍0255。說明:GetBValue宏在WindowsSDK中定義。2.2.5getcolor這個函數(shù)用于獲取當(dāng)前繪圖前景色COLORREFgetcolor();2.2.6GetGValueGetGValue宏用于返回指定顏色中的綠色值。BYTEGetGValue(COLORREFrgb);參數(shù):rgb指定的顏色。返回值:指定顏色中的綠色值,值的范圍0

13、255。說明:GetGValue宏在WindowsSDK中定義。2.2.7GetRValueGetRValue宏用于返回指定顏色中的紅色值。BYTEGetRValue(COLORREFrgb);參數(shù):rgb指定的顏色。返回值:指定顏色中的紅色值,值的范圍0255。說明:GetRValue宏在WindowsSDK中定義。2.2.8HSLtoRGB該函數(shù)用于轉(zhuǎn)換HSL顏色為RGB顏色。COLORREFHSLtoRGB(floatH,floatS,floatL);參數(shù):H原HSL顏色模型的Hue(色相)分量,0=H360。S原HSL顏色模型的Saturation(飽和度)分量,0=S=1。L原HSL

14、顏色模型的Lightness(亮度)分量,0=L=1。返回值:對應(yīng)的RGB顏色。說明:HSL又稱HLS。HSL的顏色模型如圖所示:H是英文Hue的首字母,表示色相,即組成可見光譜的單色。紅色在0度,綠色在120度,藍(lán)色在240度,以此方向過渡。S是英文Saturation的首字母,表示飽和度,等于0時為灰色。在最大飽和度1時,具有最純的色光。L是英文Lightness的首字母,表示亮度,等于0時為黑色,等于0.5時是色彩最鮮明的狀態(tài),等于1時為白色。示例:請參見示例程序中的“彩虹”。2.2.9HSVtoRGB該函數(shù)用于轉(zhuǎn)換HSV顏色為RGB顏色。COLORREFHSVtoRGB(floatH,

15、floatS,floatV);參數(shù):H原HSV顏色模型的Hue(色相)分量,0=H360。S原HSV顏色模型的Saturation(飽和度)分量,0=S=1。V原HSV顏色模型的Value(明度)分量,0=V=1。返回值:對應(yīng)的RGB顏色。說明:HSV又稱HSB。HSV的顏色模型如圖所示:H是英文Hue的首字母,表示色相,即組成可見光譜的單色。紅色在0度,綠色在120度,藍(lán)色在240度,以此方向過渡。S是英文Saturation的首字母,表示飽和度,等于0時為灰色。在最大飽和度1時,每一色相具有最純的色光。V是英文Value的首字母,表示明度,等于0時為黑色,在最大明度1時,是色彩最鮮明的狀態(tài)

16、。示例:HSV顏色模型類似于HSL,示例程序中的“彩虹”是HSL模型的操作范例,可以參考。2.2.10RGBRGB宏用于通過紅、綠、藍(lán)顏色分量合成顏色。COLORREFRGB(BYTEbyRed,/顏色的紅色部分BYTEbyGreen,/顏色的綠色部分BYTEbyBlue/顏色的藍(lán)色部分);參數(shù):byRed顏色的紅色部分,取值范圍:0255。byGreen顏色的綠色部分,取值范圍:0255。byBlue顏色的藍(lán)色部分,取值范圍:0255。返回值:返回合成的顏色。說明:可以通過GetRValue、GetGValue、GetBValue宏從顏色中分離出紅、綠、藍(lán)顏色分量。注:RGB宏在Window

17、sSDK中定義。2.2.11RGBtoGRAY該函數(shù)用于返回與指定顏色對應(yīng)的灰度值顏色。COLORREFRGBtoGRAY(COLORREFrgb);參數(shù):rgb原RGB顏色。2.2.12RGBtoHSL該函數(shù)用于轉(zhuǎn)換RGB顏色為HSL顏色。voidRGBtoHSL(COLORREFrgb,float*H,float*S,float*L);參數(shù):rgb原RGB顏色。H用于返回HSL顏色模型的Hue(色相)分量,0=H360。S用于返回HSL顏色模型的Saturation(飽和度)分量,0=S=1。L用于返回HSL顏色模型的Lightness(亮度)分量,0=L=1。說明:HSL詳見HSLtoR

18、GB。2.2.13RGBtoHSV該函數(shù)用于轉(zhuǎn)換RGB顏色為HSV顏色。voidRGBtoHSV(COLORREFrgb,float*H,float*S,float*V);參數(shù):rgb原RGB顏色。H用于返回HSV顏色模型的Hue(色相)分量,0=H360。S用于返回HSV顏色模型的Saturation(飽和度)分量,0=S=1。V用于返回HSV顏色模型的Value(明度)分量,0=V=1。2.2.14setbkcolor這個函數(shù)用于設(shè)置當(dāng)前繪圖背景色。voidsetbkcolor(COLORREFcolor);參數(shù):color指定要設(shè)置的背景顏色。說明:“背景色”是調(diào)色板繪圖模式下的概念,所

19、謂的背景色,是調(diào)色板中編號為0的顏色,可以通過修改編號0的顏色達(dá)到隨時修改背景色的目的。在調(diào)色板模式下,顯存中保存的是每種顏色在調(diào)色板中的編號。在EasyX中,已經(jīng)廢棄了調(diào)色板模式。真彩色繪圖模式下沒有調(diào)色板,顯存中直接保存每個點的顏色,沒有背景色的概念。EasyX采用真彩色繪圖模式,同時使用背景色,目的有兩個:1.當(dāng)文字背景不是透明時,指定文字的背景色。2.執(zhí)行cleardevice()或clearcliprgn()時,使用該顏色清空屏幕或裁剪區(qū)。示例:以下示例實現(xiàn)在藍(lán)色背景下繪制紅色的矩形:#include#includevoidmain()/初始化繪圖窗口initgraph(640,48

20、0);/設(shè)置背景色為藍(lán)色setbkcolor(BLUE);/用背景色清空屏幕cleardevice();/設(shè)置繪圖色為紅色setcolor(RED);/畫矩形rectangle(100,100,300,300);/按任意鍵退出getch();closegraph();2.2.15setcolor這個函數(shù)用于設(shè)置當(dāng)前繪圖前景色。voidsetcolor(COLORREFcolor);參數(shù):color要設(shè)置的前景顏色。2.3繪制圖形相關(guān)函數(shù)22.3.2arc這個函數(shù)用于畫橢圓弧。voidarc(intleft,inttop,intright,intbottom,doublestangle,doub

21、leendangle);參數(shù):left圓弧所在橢圓的外切矩形的左上角x坐標(biāo)。top圓弧所在橢圓的外切矩形的左上角y坐標(biāo)。right圓弧所在橢圓的外切矩形的右下角x坐標(biāo)。bottom圓弧所在橢圓的外切矩形的右下角y坐標(biāo)。stangle圓弧的起始角的弧度。endangle圓弧的終止角的弧度。2.3.3bar這個函數(shù)用于畫無邊框填充矩形。voidbar(intleft,inttop,intright,intbottom);參數(shù):left矩形左部x坐標(biāo)。top矩形上部y坐標(biāo)。right矩形右部x坐標(biāo)。bottom矩形下部y坐標(biāo)。2.3.4bar3d這個函數(shù)用于畫有邊框三維填充矩形。voidbar3d(

22、intleft,inttop,intright,intbottom,intdepth,booltopflag);參數(shù):left矩形左部x坐標(biāo)。top矩形上部y坐標(biāo)。right矩形右部x坐標(biāo)。bottom矩形下部y坐標(biāo)。depth矩形深度。topflag為false時,將不畫矩形的三維頂部。該選項可用來畫堆疊的三維矩形。2.3.5circle這個函數(shù)用于畫圓。voidcircle(intx,inty,intradius);參數(shù):x圓的圓心x坐標(biāo)。y圓的圓心y坐標(biāo)。radius圓的半徑。2.3.6drawpoly這個函數(shù)用于畫多邊形。voiddrawpoly(intnumpoints,consti

23、nt*polypoints);參數(shù):numpoints多邊形點的個數(shù)。polypoints每個點的坐標(biāo),數(shù)組元素個數(shù)為numpoints*2。該函數(shù)并不會自動連接多邊形首尾。如果需要畫封閉的多邊形,請將最后一個點設(shè)置為與第一點相同。以下局部代碼繪制一個封閉的三角形:intpoints=50,200,200,200,200,50,50,200;drawpoly(4,points);2.3.7ellipse這個函數(shù)用于畫橢圓。voidellipse(intleft,inttop,intright,intbottom);參數(shù):left橢圓外切矩形的左上角x坐標(biāo)。top橢圓外切矩形的左上角y坐標(biāo)。ri

24、ght橢圓外切矩形的右下角x坐標(biāo)。bottom橢圓外切矩形的右下角y坐標(biāo)。說明:由于屏幕像素點坐標(biāo)是整數(shù),因此用圓心和半徑描述的橢圓無法處理直徑為偶數(shù)的情況。而該函數(shù)的參數(shù)采用外切矩形來描述橢圓,可以解決這個問題。當(dāng)外切矩形為正方形時,可以繪制圓。2.3.8fillcircle這個函數(shù)用于畫填充圓。voidfillcircle(intx,inty,intradius);參數(shù):x圓心的x坐標(biāo)。y圓心的y坐標(biāo)。radius圓的半徑。說明:該函數(shù)使用當(dāng)前線形和當(dāng)前填充樣式繪制有外框的填充圓。2.3.9fillellipse這個函數(shù)用于畫填充的橢圓。voidfillellipse(intleft,in

25、ttop,intright,intbottom);參數(shù):left橢圓外切矩形的左上角x坐標(biāo)。top橢圓外切矩形的左上角y坐標(biāo)。right橢圓外切矩形的右下角x坐標(biāo)。bottom橢圓外切矩形的右下角y坐標(biāo)。說明:該函數(shù)使用當(dāng)前線形和當(dāng)前填充樣式繪制有外框的填充橢圓。由于屏幕像素點坐標(biāo)是整數(shù),因此用圓心和半徑描述的橢圓無法處理直徑為偶數(shù)的情況。而該函數(shù)的參數(shù)采用外切矩形來描述橢圓,可以解決這個問題。當(dāng)外切矩形為正方形時,可以繪制填充圓。2.3.10fillpoly這個函數(shù)用于畫填充的多邊形。voidfillpoly(intnumpoints,constint*polypoints);參數(shù):nump

26、oints多邊形點的個數(shù)。polypoints每個點的坐標(biāo),數(shù)組元素個數(shù)為numpoints*2。該函數(shù)會自動連接多邊形首尾。說明:該函數(shù)使用當(dāng)前線形和當(dāng)前填充樣式繪制有外框的填充多邊形。示例:以下局部代碼繪制一個封閉的填充三角形:intpoints=50,200,200,200,200,50;fillpoly(3,points);2.3.11floodfill這個函數(shù)用于填充區(qū)域。voidfloodfill(intx,inty,COLORREFborder)參數(shù):x待填充區(qū)域內(nèi)任意點的x坐標(biāo)。y待填充區(qū)域內(nèi)任意點的y坐標(biāo)。border待填充區(qū)域的邊界顏色。填充動作在該顏色圍成的封閉區(qū)域內(nèi)填充

27、。說明:填充動作以(x,y)為起點,向周圍擴(kuò)散,直到遇到border指定的顏色才會終止。所以,指定的區(qū)域必須是封閉的。填充的顏色和樣式可以使用setfillstyle函數(shù)指定。2.3.12getfillstyle這個函數(shù)用于獲取當(dāng)前填充類型。voidgetfillstyle(COLORREF*pcolor,int*ppattern=NULL,char*pupattern=NULL);參數(shù):pcolor返回當(dāng)前填充色。ppattern返回當(dāng)前填充圖案。詳見setfillstyle。pupattern指向char8的指針,如果該指針不為空,且當(dāng)前填充圖案為USER_FILL,返回當(dāng)前的自定義填充樣

28、式。2.3.13getheight這個函數(shù)用于獲取繪圖區(qū)高度。intgetheight();2.3.14getlinestyle這個函數(shù)用于獲取當(dāng)前線形。voidgetlinestyle(int*plinestyle,WORD*pupattern=NULL,int*pthickness=NULL);參數(shù):plinestyle返回當(dāng)前線型。詳見setlinestyle。pupattern返回當(dāng)前自定義線形數(shù)據(jù)。pthickness返回當(dāng)前線形寬度。2.3.15getpixel這個函數(shù)用于獲取點的顏色。COLORREFgetpixel(intx,inty);參數(shù):x要獲取顏色的x坐標(biāo)。y要獲取顏色

29、的y坐標(biāo)。2.3.16getwidth該函數(shù)用于獲取繪圖區(qū)寬度。intgetwidth();2.3.17getx這個函數(shù)用于獲取當(dāng)前x坐標(biāo)。intgetx();2.3.18gety這個函數(shù)用于獲取當(dāng)前y坐標(biāo)。intgety();2.3.19line這個函數(shù)用于畫線。還可以用linerel和lineto畫線。voidline(intx1,inty1,intx2,inty2);參數(shù):x1線的起始點的x坐標(biāo)。y1線的起始點的y坐標(biāo)。x2線的終止點的x坐標(biāo)。y2線的終止點的y坐標(biāo)。2.3.20linerel這個函數(shù)用于畫線。還可以用line和lineto畫線。voidlinerel(intdx,int

30、dy);參數(shù):dx從“當(dāng)前點”開始畫線,沿x軸偏移dx。dy從“當(dāng)前點”開始畫線,沿y軸偏移dy。2.3.21lineto這個函數(shù)用于畫線。還可以用line和linerel畫線。voidlineto(intx,inty);參數(shù):x目標(biāo)點的x坐標(biāo)(從“當(dāng)前點”開始畫線)。y目標(biāo)點的y坐標(biāo)(從“當(dāng)前點”開始畫線)。2.3.22moverel這個函數(shù)用于移動當(dāng)前點。有些繪圖操作會從“當(dāng)前點”開始,這個函數(shù)可以設(shè)置該點。還可以用moveto設(shè)置當(dāng)前點。voidmoverel(intdx,intdy);參數(shù):dx將當(dāng)前點沿x軸移動dx。dy將當(dāng)前點沿y軸移動dy。2.3.23moveto這個函數(shù)用于移動

31、當(dāng)前點。有些繪圖操作會從“當(dāng)前點”開始,這個函數(shù)可以設(shè)置該點。還可以用moverel設(shè)置當(dāng)前點。voidmoveto(intx,inty);參數(shù):x新的當(dāng)前點x坐標(biāo)。y新的當(dāng)前點y坐標(biāo)。2.3.24pie這個函數(shù)用于畫填充橢圓扇形。voidpie(intleft,inttop,intright,intbottom,doublestangle,doubleendangle);參數(shù):left扇形所在橢圓的外切矩形的左上角x坐標(biāo)。top扇形所在橢圓的外切矩形的左上角y坐標(biāo)。right扇形所在橢圓的外切矩形的右下角x坐標(biāo)。bottom扇形所在橢圓的外切矩形的右下角y坐標(biāo)。stangle橢圓扇形的起始角

32、的弧度。endangle橢圓扇形的終止角的弧度。2.3.25putpixel這個函數(shù)用于畫點。voidputpixel(intx,inty,COLORREFcolor);參數(shù):x點的x坐標(biāo)。y點的y坐標(biāo)。color點的顏色。2.3.26rectangle這個函數(shù)用于畫空心矩形。voidrectangle(intleft,inttop,intright,intbottom);參數(shù):left矩形左部x坐標(biāo)。top矩形上部y坐標(biāo)。right矩形右部x坐標(biāo)。bottom矩形下部y坐標(biāo)。2.3.27setfillstyle這個函數(shù)用于設(shè)置當(dāng)前填充類型。voidsetfillstyle(COLORREFc

33、olor,intpattern=SOLID_FILL,constchar*pupattern=NULL);參數(shù):color填充顏色。pattern填充類型,可以是以下宏或值:宏值含義NULL_FILL1不填充SOLID_FILL2固實填充BDIAGONAL_FILL3CROSS_FILL4DIAGCROSS_FILL5DOT_FILL6FDIAGONAL_FILL7HORIZONTAL_FILL8VERTICAL_FILL9BDIAGONAL2_FILL10CROSS2_FILL11DIAGCROSS2_FILL12DOT2_FILL13FDIAGONAL2_FILL14HORIZONTAL2

34、_FILL15VERTICAL2_FILL16BDIAGONAL3_FILL17CROSS3_FILL18DIAGCROSS3_FILL19DOT3_FILL20FDIAGONAL3_FILL21HORIZONTAL3_FILL22VERTICAL3_FILL23INTERLEAVE_FILL24PATTERN_FILL25指定圖案填充。詳見pupattern參數(shù)。pupattern指定圖案填充時的樣式,僅當(dāng)pattern為PATTERN_FILL時有效。該指針指向char8數(shù)組,該數(shù)組表示8x8的填充樣式。具體的,每個數(shù)組元素表示一行的樣式,每個char元素有8位,按位從高到低表示從左到右,

35、每個位表示一個點的狀態(tài),由此組成8x8的區(qū)域。示例:設(shè)置藍(lán)色固實填充:setfillstyle(BLUE);設(shè)置紅色斜線填充:setfillstyle(RED,LTSLASH_FILL);設(shè)置黃色的自定義的填充樣式(圓形圖案填充):setfillstyle(YELLOW,PATTERN_FILL,x3ex41x80x80x80x80x80x41);設(shè)置綠色的自定義的填充樣式(細(xì)斜線夾粗斜線圖案填充):setfillstyle(GREEN,PATTERN_FILL,x5ax2dx96x4bxa5xd2x69xb4);2.3.28setlinestyle這個函數(shù)用于設(shè)置當(dāng)前線形。voidsetli

36、nestyle(intlinestyle,WORDupattern=NULL,intthickness=1);參數(shù):linestyle線型,可以是以下值:值含義PS_SOLID線形為實線。PS_DASH線形為:-PS_DOT線形為:PS_DASHDOT線形為:-PS_DASHDOTDOT線形為:-PS_NULL線形為不可見。PS_USERSTYLE線形樣式是自定義的,依賴于upattern參數(shù)。upattern自定義線形數(shù)據(jù)。自定義規(guī)則:該數(shù)據(jù)為WORD類型,共16個二進(jìn)制位,每位為1表示畫線,為0表示空白。從低位到高位表示從起始到終止的方向。僅當(dāng)線型為PS_USERSTYLE時該參數(shù)有效。t

37、hickness線形寬度。示例:設(shè)置線形為點劃線:setlinestyle(PS_DASHDOT);設(shè)置線形為寬度3像素的虛線:setlinestyle(PS_DASH,NULL,3);2.3.29setwritemode這個函數(shù)用于設(shè)置繪圖位操作模式。voidsetwritemode(intmode);參數(shù):mode二元光柵操作碼(即位操作模式),支持全部的16種二元光柵操作碼,羅列如下:位操作模式描述R2_BLACK繪制出的像素顏色=黑色R2_COPYPEN繪制出的像素顏色=當(dāng)前顏色(默認(rèn))R2_MASKNOTPEN繪制出的像素顏色=屏幕顏色AND(NOT當(dāng)前顏色)R2_MASKPEN繪制

38、出的像素顏色=屏幕顏色AND當(dāng)前顏色R2_MASKPENNOT繪制出的像素顏色=(NOT屏幕顏色)AND當(dāng)前顏色R2_MERGENOTPEN繪制出的像素顏色=屏幕顏色OR(NOT當(dāng)前顏色)R2_MERGEPEN繪制出的像素顏色=屏幕顏色OR當(dāng)前顏色R2_MERGEPENNOT繪制出的像素顏色=(NOT屏幕顏色)OR當(dāng)前顏色R2_NOP繪制出的像素顏色=屏幕顏色R2_NOT繪制出的像素顏色=NOT屏幕顏色R2_NOTCOPYPEN繪制出的像素顏色=NOT當(dāng)前顏色R2_NOTMASKPEN繪制出的像素顏色=NOT(屏幕顏色AND當(dāng)前顏色)R2_NOTMERGEPEN繪制出的像素顏色=NOT(屏幕顏

39、色OR當(dāng)前顏色)R2_NOTXORPEN繪制出的像素顏色=NOT(屏幕顏色XOR當(dāng)前顏色)R2_WHITE繪制出的像素顏色=白色R2_XORPEN繪制出的像素顏色=屏幕顏色XOR當(dāng)前顏色注:1.AND/OR/NOT/XOR為布爾運(yùn)算。2.屏幕顏色指繪制所經(jīng)過的屏幕像素點的顏色。3.當(dāng)前顏色是指通過setcolor設(shè)置的用于當(dāng)前繪制的顏色。2.4文字輸出相關(guān)函數(shù)2.4.1相關(guān)函數(shù)和數(shù)據(jù)如下:函數(shù)或數(shù)據(jù)描述getfont獲取當(dāng)前字體樣式。LOGFONT保存字體樣式的結(jié)構(gòu)體。outtext在當(dāng)前位置輸出字符串。outtextxy在指定位置輸出字符串。drawtext在指定區(qū)域內(nèi)以指定格式輸出字符串。

40、setbkmode設(shè)置輸出文字時的背景模式。setfont設(shè)置當(dāng)前字體樣式。textheight獲取字符串實際占用的像素高度。textwidth獲取字符串實際占用的像素寬度。2.4.2drawtext這個函數(shù)用于在指定區(qū)域內(nèi)以指定格式輸出字符串。intdrawtext(LPCTSTRstr,RECT*pRect,UINTuFormat);intdrawtext(TCHARc,RECT*pRect,UINTuFormat);參數(shù):str待輸出的字符串。pRect指定的矩形區(qū)域的指針。某些uFormat標(biāo)志會使用這個矩形區(qū)域做返回值。詳見后文說明。uFormat指定格式化輸出文字的方法。詳見后文說

41、明。C待輸出的字符。返回值:函數(shù)執(zhí)行成功時,返回文字的高度。如果指定了DT_VCENTER或DT_BOTTOM標(biāo)志,返回值表示從pRect-top到輸出文字的底部的偏移量。如果函數(shù)執(zhí)行失敗,返回0。說明:注:下文關(guān)于文字位置的描述,均是相對于pRect指向的矩形而言。標(biāo)志描述DT_BOTTOM調(diào)整文字位置到矩形底部,僅當(dāng)和DT_SINGLELINE一起使用時有效。DT_CALCRECT檢測矩形的寬高。如果有多行文字,drawtext使用pRect指定的寬度,并且擴(kuò)展矩形的底部以容納每一行文字。如果只有一行文字,drawtext修改pRect的右邊以容納最后一個文字。無論哪種情況,drawtex

42、t都返回格式化后的文字高度,并且不輸出文字。DT_CENTER文字水平居中。DT_EDITCONTROL以單行編輯的方式復(fù)制可見文本。具體的說,就是以字符的平均寬度為計算依據(jù),同時用這個方式應(yīng)用于編輯控制,并且這種方式不顯示可見部分的最后一行。DT_END_ELLIPSIS對于文本顯示,如果字符串的末字符不在矩形內(nèi),它會被截斷并以省略號標(biāo)識。如果是一個單詞而不是一個字符,其末尾超出了矩形范圍,它不會被截斷。字符串不會被修改,除非指定了DT_MODIFYSTRING標(biāo)志。DT_EXPANDTABS展開TAB符號。默認(rèn)每個TAB占8個字符位置。注意,DT_WORD_ELLIPSIS、DT_PATH

43、_ELLIPSIS和DT_END_ELLIPSIS不能和DT_EXPANDTABS一起用。DT_EXTERNALLEADING在行高里包含字體的行間距。通常情況下,行間距不被包含在正文的行高里。DT_HIDEPREFIXWindows2000/XP:忽略文字中的前綴字符(&),并且前綴字符后面的字符不會出現(xiàn)下劃線。其他前綴字符仍會被處理。例如:輸入字符串:A&bc&d通常輸出:Abc&dDTDT_HIDEPREFIX:Abc&dDT_INTERNAL使用系統(tǒng)字體計算文字的寬高等屬性。DT_LEFT文字左對齊。DT_MODIFYSTRING修改指定字符串為顯示出的正文。僅當(dāng)和DT_END_ELL

44、IPSIS或DT_PATH_ELLIPSIS標(biāo)志同時使用時有效。DT_NOCLIP使輸出文字不受pRect裁剪限制。使用DT_NOCLIP會使drawtext執(zhí)行稍快一些。DT_NOFULLWIDTHCHARBREAKWindows2000/XP:防止換行符插入到DBCS(double-widecharacterstring,即寬字符串),換行規(guī)則相當(dāng)于SBCS字符串。僅當(dāng)和DT_WORDBREAK一起使用時有效。例如,漢字就是寬字符,設(shè)置該標(biāo)志后,連續(xù)的漢字會像英文單詞一樣不被換行符中斷。DT_NOPREFIX關(guān)閉前綴字符的處理。通常,DrawText解釋前綴轉(zhuǎn)義符&為其后的字符加下劃線,解

45、釋&為顯示單個&。指定DT_NOPREFIX,這種處理被關(guān)閉。例如:輸入字符串:A&bc&d通常輸出:Abc&dDT_NOPREFIX:A&bc&dDT_PATH_ELLIPSIS對于顯示的文字,用省略號替換字符串中間的字符以便容納于矩形內(nèi)。如果字符串包含反斜杠(),DT_PATH_ELLIPSIS盡可能的保留最后一個反斜杠后面的文字。字符串不會被修改,除非指定了DT_MODIFYSTRING標(biāo)志。DT_PREFIXONLYWindows2000/XP:僅僅在(&)前綴字符的位置下繪制一個下劃線。不繪制字符串中的任何其他字符。例如:輸入字符串:A&bc&d通常輸出:Abc&dDT_PREFIX

46、ONLY:_DT_RIGHT文字右對齊。DT_RTLREADING設(shè)置從右向左的閱讀順序(當(dāng)文字是希伯來文或阿拉伯文時)。默認(rèn)的閱讀順序是從左向右。DT_SINGLELINE使文字顯示在一行?;剀嚭蛽Q行符都無效。DT_TABSTOP設(shè)置TAB制表位。uFormat的158位指定TAB的字符寬度。默認(rèn)TAB表示8個字符寬度。注意,DT_CALCRECT、DT_EXTERNALLEADING、DT_INTERNAL、DT_NOCLIP和DT_NOPREFIX不能和DT_TABSTOP一起用。DT_TOP文字頂部對齊。DT_VCENTER文字垂直居中。僅當(dāng)和DT_SINGLELINE一起使用時有效。

47、DT_WORDBREAK自動換行。當(dāng)文字超過右邊界時會自動換行(不拆開單詞)?;剀嚪瑯涌梢該Q行。DT_WORD_ELLIPSIS截去無法容納的文字,并在末尾增加省略號。示例:以下范例在屏幕中央輸出字符串“HelloWorld”:#include#includevoidmain()/繪圖環(huán)境初始化initgraph(640,480);/在屏幕中央輸出字符串RECTr=0,0,640,480;drawtext(HelloWorld,&r,DT_CENTER|DT_VCENTER|DT_SINGLELINE);/按任意鍵退出getch();closegraph();2.4.3getfont這個函數(shù)

48、用于獲取當(dāng)前字體樣式。voidgetfont(LOGFONT*font);參數(shù):font指向LOGFONT結(jié)構(gòu)體的指針。2.4.4LOGFONT這個結(jié)構(gòu)體定義了字體的屬性。structLOGFONTLONGlfHeight;LONGlfWidth,LONGlfEscapement;LONGlfOrientati,LONGlfWeight;BYTElfItalic;BYTElfUnderline,BYTElfStrikeOut;BYTElfCharSet;BYTElfOutPrecision;BYTElfClipPrecision;BYTElfQuality,BYTElfPitchAndFami

49、ly;TCHARlfFaceNameLF_FACESIZE;成員lfHeight指定高度(邏輯單位)。lfWidth指定字符的平均寬度(邏輯單位)。如果為0,則比例自適應(yīng)。lfEscapement字符串的書寫角度,單位0.1度,默認(rèn)為0。lfOrientation每個字符的書寫角度,單位0.1度,默認(rèn)為0。lfWeight字符的筆畫粗細(xì),范圍01000,0表示默認(rèn)粗細(xì),使用數(shù)字或下表中定義的宏均可。宏粗細(xì)值FW_DONTCARE0FW_THIN100FW_EXTRALIGHT200FW_ULTRALIGHT200FW_LIGHT300FW_NORMAL400FW_REGULAR400FW_ME

50、DIUM500FW_SEMIBOLD600FW_DEMIBOLD600FW_BOLD700FW_EXTRABOLD800FW_ULTRABOLD800FW_HEAVY900FW_BLACK900lfItalic指定字體是否是斜體。lfUnderline指定字體是否有下劃線。lfStrikeOut指定字體是否有刪除線。lfCharSet指定字符集??梢允褂靡韵骂A(yù)定義的值:ANSI_CHARSETBALTIC_CHARSETCHINESEBIG5_CHARSETDEFAULT_CHARSETEASTEUROPE_CHARSETGB2312_CHARSETGREEK_CHARSETHANGUL_CH

51、ARSETMAC_CHARSETOEM_CHARSETRUSSIAN_CHARSETSHIFTJIS_CHARSETSYMBOL_CHARSETTURKISH_CHARSET其中,OEM_CHARSET表示字符集依賴本地操作系統(tǒng)。DEFAULT_CHARSET表示字符集基于本地操作系統(tǒng)。例如,系統(tǒng)位置是English(UnitedStates),字符集將設(shè)置為ANSI_CHARSET。lfOutPrecision指定文字的輸出精度。輸出精度定義輸出與所請求的字體高度、寬度、字符方向、行距、間距和字體類型相匹配必須達(dá)到的匹配程度??梢允且韵轮担褐岛xOUT_DEFAULT_PRECIS指定默認(rèn)的

52、映射行為。OUT_DEVICE_PRECIS當(dāng)系統(tǒng)包含多個名稱相同的字體時,指定設(shè)備字體。OUT_OUTLINE_PRECIS指定字體映射選擇TrueType和其它的outline-based字體。OUT_RASTER_PRECIS當(dāng)系統(tǒng)包含多個名稱相同的字體時,指定光柵字體(即點陣字體)。OUT_STRING_PRECIS這個值并不能用于指定字體映射,只是指定點陣字體枚舉數(shù)據(jù)。OUT_STROKE_PRECIS這個值并不能用于指定字體映射,只是指定TrueType和其他的outline-based字體,以及矢量字體的枚舉數(shù)據(jù)。OUT_TT_ONLY_PRECIS指定字體映射只選擇TrueTy

53、pe字體。如果系統(tǒng)中沒有安裝TrueType字體,將選擇默認(rèn)操作。OUT_TT_PRECIS當(dāng)系統(tǒng)包含多個名稱相同的字體時,指定TrueType字體。lfClipPrecision指定文字的剪輯精度。剪輯精度定義如何剪輯字符的一部分位于剪輯區(qū)域之外的字符??梢允且韵轮担褐岛xCLIP_DEFAULT_PRECIS指定默認(rèn)的剪輯行為。CLIP_STROKE_PRECIS這個值并不能用于指定字體映射,只是指定光柵(即點陣)、矢量或TrueType字體的枚舉數(shù)據(jù)。CLIP_EMBEDDED當(dāng)使用內(nèi)嵌的只讀字體時,必須指定這個標(biāo)志。CLIP_LH_ANGLES如果指定了該值,所有字體的旋轉(zhuǎn)都依賴于坐標(biāo)系統(tǒng)的方向是逆時針或順時針。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論