【文章內(nèi)容簡(jiǎn)介】
函數(shù)功能:在顯示設(shè)備上用指定繪圖模式畫點(diǎn)。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x――目標(biāo)點(diǎn)x坐標(biāo);y――目標(biāo)點(diǎn)y坐標(biāo)。4)int GetPixel(HDC hdc, int x, int y)。函數(shù)功能:獲得顯示設(shè)備上目標(biāo)點(diǎn)的顏色值。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x――目標(biāo)點(diǎn)x坐標(biāo);y――目標(biāo)點(diǎn)y坐標(biāo)。返 回:24BitRGB顏色值。5)void DrawLine(HDC hdc, int x0, int y0, int x1, int y1)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式畫一條直線。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――直線起始x坐標(biāo);y0――直線起始y坐標(biāo);x1――直線終止x坐標(biāo);y1――直線終止y坐標(biāo)。6)void DrawRect(HDC hdc, int x0, int y0, int x1, int y1)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式畫一個(gè)矩形邊框。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――矩形左上x坐標(biāo);y0――矩形左上y坐標(biāo);x1――矩形右下x坐標(biāo);y1――矩形右下y坐標(biāo)。7)void FillRect(HDC hdc, int x0, int y0, int x1, int y1)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式填充一個(gè)矩形。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――矩形左上x坐標(biāo);y0――矩形左上y坐標(biāo);x1――矩形右下x坐標(biāo);y1――矩形右下y坐標(biāo)。8)void DrawCircle(HDC hdc, int x0, int y0, int r)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式畫一個(gè)圓形邊框。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――圓心x坐標(biāo);y0――圓心y坐標(biāo);r――圓的半徑。9)void FillCircle(HDC hdc, int x0, int y0, int r)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式填充一個(gè)圓形。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――圓心x坐標(biāo);y0――圓心y坐標(biāo);r――圓的半徑。10)void DrawEllipse(HDC hdc, int x0, int y0, int rx, int ry)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式畫一個(gè)橢圓邊框。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――圓心x坐標(biāo);y0――圓心y坐標(biāo);rx――x軸半徑;ry――y軸半徑。11)void FillEllipse(HDC hdc, int x0, int y0, int rx, int ry)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式填充一個(gè)橢圓。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――圓心x坐標(biāo);y0――圓心y坐標(biāo);rx――x軸半徑;ry――y軸半徑。12)void DrawTriangle(HDC hdc,int x0,int y0,int x1,int y1,int x2,int y2)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式畫一個(gè)三角形邊框。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――頂點(diǎn)0的x坐標(biāo);y0――頂點(diǎn)0的y坐標(biāo);x1――頂點(diǎn)1的x坐標(biāo);y1――頂點(diǎn)1的y坐標(biāo);x2――頂點(diǎn)2的x坐標(biāo);y2――頂點(diǎn)2的y坐標(biāo)。13)void FillTriangle(HDC hdc,int x0,int y0,int x1,int y1,int x2,int y2)。函數(shù)功能:在顯示設(shè)備上用指定繪圖模式填充一個(gè)三角形。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;x0――頂點(diǎn)0的x坐標(biāo);y0――頂點(diǎn)0的y坐標(biāo);x1――頂點(diǎn)1的x坐標(biāo);y1――頂點(diǎn)1的y坐標(biāo);x2――頂點(diǎn)2的x坐標(biāo);y2――頂點(diǎn)2的y坐標(biāo)。14)void BitBlt(HDC hdc, int xd, int yd, int w, int h, HDC hdcs, int xs, int ys, eDRAW mode)。函數(shù)功能:按照指定的復(fù)制模式,將源顯示設(shè)備的指定區(qū)域復(fù)制到目標(biāo)設(shè)備的指定位置。參數(shù)說(shuō)明:hdc――目標(biāo)顯示設(shè)備的句柄;xd――目標(biāo)區(qū)域左上x坐標(biāo);yd――目標(biāo)區(qū)域左上y坐標(biāo);w――指定復(fù)制區(qū)域的寬;h――指定復(fù)制區(qū)域的高;hdcs――源顯示設(shè)備的句柄;xs――源區(qū)域左上x坐標(biāo);ys――源區(qū)域左上y坐標(biāo);mode――復(fù)制模式,與“復(fù)制模式”章節(jié)所介紹的一樣。 15)void AlphaBlend(HDC hdc, int xd, int yd, int w, int h, HDC hdcs, int xs, int ys, int mode)。函數(shù)功能:按照指定的alpha混合模式,將源顯示設(shè)備的指定區(qū)域與目標(biāo)設(shè)備的指定區(qū)域進(jìn)行alpha混合,并將結(jié)果復(fù)制到目標(biāo)設(shè)備區(qū)域中。參數(shù)說(shuō)明:hdc――目標(biāo)顯示設(shè)備的句柄;xd――目標(biāo)區(qū)域左上x坐標(biāo);yd――目標(biāo)區(qū)域左上y坐標(biāo);w――指定復(fù)制區(qū)域的寬;h――指定復(fù)制區(qū)域的高;hdcs――源顯示設(shè)備的句柄;xs――源區(qū)域左上x坐標(biāo);ys――源區(qū)域左上y坐標(biāo);mode――alpha混合模式。 ALPHA_SRC|i效果 i效果16)void Rotate(HDC hdc, HDC hdcs, int xs, int ys, int w, int h, double RotaryAngle, double ZoomX, double ZoomY, int move_x, int move_y, eDRAW mode)。函數(shù)功能:將源設(shè)備的指定區(qū)域進(jìn)行旋轉(zhuǎn)和縮放操作后,將結(jié)果復(fù)制到目標(biāo)設(shè)備區(qū)域中。參數(shù)說(shuō)明:hdc――目標(biāo)顯示設(shè)備的句柄;hdcs――源顯示設(shè)備的句柄;xs――源顯示設(shè)備指定區(qū)域左上x坐標(biāo);ys――源顯示設(shè)備指定區(qū)域左上y坐標(biāo);w――源顯示設(shè)備指定區(qū)域的寬;h――源顯示設(shè)備指定區(qū)域的高;RotaryAngle――旋轉(zhuǎn)角度(單位為弧度);ZoomX――x軸方向縮放系數(shù),如果不縮放則為1,放大為兩倍則為2,;ZoomY――y軸方向縮放系數(shù),如果不縮放則為1,放大為兩倍則為2,;move_x――目標(biāo)顯示設(shè)備區(qū)域的中心點(diǎn)x坐標(biāo);move_y――目標(biāo)顯示設(shè)備區(qū)域的中心點(diǎn)y坐標(biāo);mode――旋轉(zhuǎn)縮放方式:DRAW_SPRITE則源設(shè)備的透明色不參與旋轉(zhuǎn)縮放。. 顯示設(shè)備的字符打印虛擬機(jī)平臺(tái)的字符打印方式分為五種方式,分別是正常打印、粗體打印、斜體打印、下劃線打印和邊框字打印。而字體大小又分為大中小三種,虛擬機(jī)平臺(tái)的字庫(kù)為目標(biāo)系統(tǒng)平臺(tái)所支持,所以在很多情況下都不能完全支持三種大小不同的字體,而應(yīng)用程序可以通過(guò)接口獲得這些信息。虛擬機(jī)平臺(tái)使用枚舉類型eFONT來(lái)定義打印方式和字體大小,定義方式如下:typedef enum { FONT_MEDIUM=0, //中等字體 FONT_SMALL=1, //小字體 FONT_LARGE=2, //大字體 FONT_EXT=3, //矢量字庫(kù)(目前尚不支持) FONT_BOLD=4, //粗體打印方式 FONT_ITALIC=8, //斜體打印方式 FONT_UNDERLINE=16, //下劃線打印方式 FONT_BORDER=32 //邊框字打印方式 }eFONT。 平臺(tái)提供的字符打印的接口有:int SetBorderColor(HDC hdc, int color)。函數(shù)功能:設(shè)置指定顯示設(shè)備的字體邊框色。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;color――邊框色值,24BitRGB格式。返 回:設(shè)備以前的字體邊框色。說(shuō) 明:當(dāng)字符打印方式設(shè)置成邊框字打印時(shí),就需要使用該函數(shù)來(lái)設(shè)置字符邊框的顏色。void SetFont(HDC hdc, eFONT font)。函數(shù)功能:設(shè)置指定顯示設(shè)備的字符打印方式以及字體大小。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備的句柄;font――需要設(shè)置的字符打印方式與字體大小的組合,打印方式不參與組合則設(shè)置為正常打印。int StringWidth(eFONT font, char *p, int num)。函數(shù)功能:取得一個(gè)字符串在指定字體及打印方式時(shí)占用的像素寬度。參數(shù)說(shuō)明:font――打印方式與字體大小;p――字符串首地址;num――字符串字節(jié)數(shù),如為1則取整個(gè)字符串。返 回:象素寬度。說(shuō) 明:該函數(shù)主要用在界面設(shè)計(jì)上,如果應(yīng)用程序在界面設(shè)計(jì)時(shí)通過(guò)該函數(shù)的返回來(lái)判斷需要預(yù)留顯示文本的大小,則能使得應(yīng)用程序有更好的兼容性。int FontHeight(eFONT font)。函數(shù)功能:取得指定字體及打印方式時(shí)字符占用的像素高度。參數(shù)說(shuō)明:font――打印方式與字體大??;返 回:象素高度。說(shuō) 明:該函數(shù)的功能與StringWidth類似,由于在固定的打印方式和字體下,各個(gè)字符都是等高的,所以無(wú)需傳入字符串了。char *NextLine(eFONT font, char *p, int width, int mode)。函數(shù)功能:取得一個(gè)字符串在指定字體及打印方式時(shí),顯示指定行象素寬度時(shí)下一行的字符串指針。參數(shù)說(shuō)明:font――打印方式與字體大?。籶――字符串首地址;width――行象素寬度;mode――是否啟用整詞折行,1為啟用,0為不啟用。返 回:下一行的字符串指針。如果本行顯示完則返回NULL。說(shuō) 明:該函數(shù)主要用文本多行顯示的排版上,應(yīng)用程序根據(jù)它來(lái)排列文本的顯示。void TextOut(HDC hdc, int font_x, int font_y, char *p, int num, eDRAW mode)。函數(shù)功能:在指定顯示設(shè)備上打印字符串。參數(shù)說(shuō)明:hdc――目標(biāo)顯示設(shè)備句柄;font_x――繪制字符串的左上x坐標(biāo);font_y――繪制字符串的左上y坐標(biāo);p――字符串首地址;num――字符串字節(jié)數(shù),如為1則取整個(gè)字符串;mode――打印模式,可用值為DRAW_COPY和DRAW_SPRITE。DRAW_COPY,用背景色填充字符串背景DRAW_SPRITE,不填充字符串背景,可實(shí)現(xiàn)在圖片上寫字。. 圖片顯示虛擬機(jī)平臺(tái)支持三種圖片格式的顯示,分別為BMP、GIF和JPG。圖片的顯示并不是直接顯示在LCD上,而是先加載到顯示設(shè)備上,如果想直接顯示出來(lái)也需要加載到LCD的顯示設(shè)備中然后再調(diào)用UpdateArea顯示。下面就分別介紹一下這幾種格式圖片的用法。. BMP顯示虛擬機(jī)平臺(tái)支持單色、16色、256色、16位555格式、16位565格式、24位色和32位色。在BMP圖使用的時(shí)候用戶需要注意的是,圖片加載時(shí)會(huì)將任何格式的數(shù)據(jù)轉(zhuǎn)存成和目標(biāo)系統(tǒng)一樣的格式。所以用戶使用高于系統(tǒng)格式色彩的圖片沒有意義,只會(huì)白白耗去存儲(chǔ)空間。另外用戶需要加載的位圖都必須帶上標(biāo)準(zhǔn)的文件頭來(lái)指定數(shù)據(jù)格式。int LoadBmp(HDC hdc, int xd, int yd, int w, int h, char *bmp, int xs, int ys, int size)。函數(shù)功能:將位圖數(shù)據(jù)裝載到指定顯示設(shè)備中。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備句柄;xd――目標(biāo)設(shè)備區(qū)域左上x坐標(biāo);yd――目標(biāo)設(shè)備區(qū)域左上y坐標(biāo);w――需要裝載的區(qū)域?qū)挾?,若傳?則為整個(gè)圖片寬度;h――需要裝載的區(qū)域高度,若傳入0則為整個(gè)圖片高度;bmp――位圖數(shù)據(jù)的地址,可能為圖片文件名也可能為內(nèi)存起始地址;xs――需要加載圖片的區(qū)域左上x坐標(biāo);ys――需要加載圖片的區(qū)域左上y坐標(biāo);size――圖片數(shù)據(jù)長(zhǎng)度,若為0則表示bmp參數(shù)為文件名。返 回:若函數(shù)調(diào)用成功,則返回0,否則返回非0。. GIF顯示GIF一般用來(lái)存儲(chǔ)多幀圖片表示動(dòng)畫,可是虛擬機(jī)平臺(tái)并不提供直接顯示多幀圖片的功能,而是加載指定幀到顯示設(shè)備。用戶如果需要做出顯示動(dòng)畫的效果,只能自己用循環(huán)的方法并添加延時(shí)來(lái)顯示。虛擬機(jī)平臺(tái)也提供了讀取GIF數(shù)據(jù)幀數(shù)的接口,避免用戶傳入非法幀序號(hào)。int GetGifInfo(char *gif, int size, int *frame, int *width, int *height)。函數(shù)功能:獲得指定GIF圖片的信息,包括幀數(shù)和寬高。參數(shù)說(shuō)明:gif――GIF圖片數(shù)據(jù)的地址,可能為圖片文件名也可能為內(nèi)存起始地址;size――圖片數(shù)據(jù)長(zhǎng)度,若為0則表示gif參數(shù)為文件名;frame――存儲(chǔ)幀總數(shù)的內(nèi)存地址;width――存儲(chǔ)圖片寬度的內(nèi)存地址;height――存儲(chǔ)圖片高度的內(nèi)存地址。返 回:若函數(shù)調(diào)用成功,則返回0,否則返回非0。int LoadGif(HDC hdc, int xd, int yd, int w, int h, char *gif, int xs, int ys, int frame, int size)。函數(shù)功能:將GIF圖片數(shù)據(jù)裝載到指定顯示設(shè)備中。參數(shù)說(shuō)明:hdc――指定顯示設(shè)備句柄;xd――目標(biāo)設(shè)備區(qū)域左上x坐標(biāo);yd――目標(biāo)設(shè)備區(qū)域左上y坐標(biāo);w――需要裝載的區(qū)域?qū)挾龋魝魅?則為整個(gè)圖片寬度;h――需要裝載的區(qū)域高度,若傳入0則為整個(gè)圖片高度;gif――GIF圖片數(shù)據(jù)的地址,可能為圖片文件名也可能為內(nèi)存起始地址;xd――需要加載圖片的區(qū)域左上x坐標(biāo);yd――需要加載圖片