freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計(jì)算機(jī)軟件及應(yīng)用]ch(1)-資料下載頁

2025-01-19 17:22本頁面
  

【正文】 于設(shè)置文本的字體 Pen HPEN XX_PEN 用于繪制圖形 二 、 Windows程序 的數(shù)據(jù)輸出過程 ? GDI中常用的圖形輸出函數(shù) – MoveTo(hDC, x, y)。 //將畫筆從當(dāng)前位置移到( x,y)坐標(biāo) – BOOL LineToEx(HDC hdc,int x,int y)。 //從當(dāng)前點(diǎn)畫直線到( x,y)坐標(biāo)處 – BOOL Rectangle(HDC hdc,int x1,int y1,int x2,int y2)。 //以( x1,y1)為左上角坐標(biāo), (x2,y2)為右下角坐標(biāo)畫矩形 – BOOL RoundRect(HDC hdc,int x1,int y1,int x2,int y2,int h,int w)。 //以( x1,y1)為左上角坐標(biāo), (x2,y2)為右下角坐標(biāo)畫圓角矩形 – BOOL Ellipse(HDC hdc,int x1,int y1,int x2,int y2)。 //以( x1,y1)為左上角坐標(biāo), (x2,y2)為右下角坐標(biāo)畫橢圓 二 、 Windows程序 的數(shù)據(jù)輸出過程 ? 3.輸出 文本 – Windows程序的文本按圖形方式輸出。 – 輸出文本時必須以像素為單位精確定位每一行的輸出位置。常用文本輸出函數(shù)有 TextOut和DrawTex – BOOL TextOut(HDC hdc,int x,int y,LPCTSTR lpString,int n)。 – int DrawText(HDC hdc,LPCTSTR lpString,int n,LPRECT lpRect,UINT uFormat)。 3.輸出 文本 ? 輸出文本的字體設(shè)置問題 – Windows提供了豐富的字體,不同字體的高度和寬度也不盡相同,函數(shù) GetTextMetrics能夠獲取當(dāng)前字體的詳細(xì)信息,如字符的完度、高度、字間距、行間距等信息。其原型如下: BOOL GetTextMetrics(HDC hdc,TEXTMETRICS amp。tm)。 TEXTMETRICS是保存字體信息的數(shù)據(jù)結(jié)構(gòu),主要域如下 : typedef struct tagTEXTMETRIC { LONG tmHeight。 //字符高度 LONG tmExternalLeading。 //行間距 LONG tmAveCharWidth。 //字符的平均寬度 LONG tmMaxCharWidth。 //最大字符寬度 LONG tmWeight。 //字符的粗細(xì)度 BYTE tmCharSet。 //字符集 …… } TEXTMETRIC。 Windows程序的數(shù)據(jù)輸出 ? 【 例 102】 在例 101的基礎(chǔ)上,修改窗口函數(shù)中的 WM_PAINT消息,讓程序用默認(rèn)畫筆和畫刷繪制一個矩形,然后創(chuàng)建藍(lán)色畫筆和紅色網(wǎng)格畫刷編繪制一個矩形和橢圓。并通過函數(shù) TextOut 分別用系統(tǒng)默認(rèn)色彩和紅色輸出兩行文本。 ? 修改后的窗口函數(shù) WndProc 如下: WndProc 函數(shù)的程序代碼 LRESULT CALLBACK WndProc(… ) { …… //同例 101 HPEN hPen,hPenOld。 //定義畫筆 HBRUSH hBrush,HbruOld。 //定義畫刷 TEXTMETRIC tm。 //定義 tm用于獲取字體信息 int x=10,y=150。 switch(message) { //消息處理 case WM_CREATE: return 0 。 case WM_PAINT: hPen=(HPEN)CreatePen(PS_SOLID,3,RGB(0,0,255))。 //創(chuàng)建藍(lán)色實(shí)線畫筆,寬 3像素點(diǎn) hBrush=(HBRUSH)CreateHatchBrush(HS_CROSS,RGB(255,0,0))。 //創(chuàng)建紅色網(wǎng)格線的畫刷 hdc = BeginPaint(hwnd,amp。ps) 。 GetClientRect(hwnd,amp。rect) 。 DrawText(hdc,TEXT(Hello,APIProgramming!),1,amp。rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) 。 Rectangle(hdc,10,10,80,80)。 //用默認(rèn)畫筆和畫刷繪制橢圓 //下面用 SelectObject函數(shù)將創(chuàng)建的畫筆和畫刷選入 Windows系統(tǒng),選入之后 //所有的圖形函數(shù)都會用新建的藍(lán)色畫筆畫圖,用紅色的網(wǎng)格畫刷填充圖形 hPenOld=(HPEN)SelectObject(hdc,hPen)。 //選入新畫筆,返回舊畫筆句柄 HbruOld=(HBRUSH)SelectObject(hdc,hBrush)。 //選入新畫刷,返回舊畫刷句柄 Rectangle(hdc,100,10,180,80)。 //畫矩形 Ellipse(hdc,250,10,350,80)。 //畫橢圓 SelectObject(hdc,hBrush)。 //恢復(fù)系統(tǒng)默認(rèn)畫刷 SelectObject(hdc,hPenOld)。 //恢復(fù)系統(tǒng)默認(rèn)畫筆 GetTextMetrics(hdc,amp。tm)。 //將當(dāng)前字體信息存入 tm TextOut(hdc,x,y,默認(rèn)系統(tǒng)的字體色彩! ,20)。 SetTextColor(hdc,RGB(255,0,0))。 //設(shè)置字體為紅色 y=y++。 //計(jì)算下一行字體輸出的縱坐標(biāo) TextOut(hdc,x,y,紅色的字體色彩! ,16)。 //用設(shè)置的顏色輸出文本 EndPaint(hwnd, amp。ps)。 return 0 。 消息 驅(qū)動程序設(shè)計(jì) 消息的類型 – 一類是由計(jì)算機(jī)硬件產(chǎn)生的消息(如用戶移動、單擊、雙擊鼠標(biāo)或按鍵盤),這類消息要進(jìn)入應(yīng)用程序的消息隊(duì)列; – 另一類是由程序或系統(tǒng)產(chǎn)生的消息(如建立窗口、窗口大小改變),這類消息不進(jìn)入應(yīng)用程序的消息隊(duì)列,由 Windows系統(tǒng)直接發(fā)送給應(yīng)用程序的窗口函數(shù),常見的不進(jìn)隊(duì)消息有WM_CREATE、 WM_DESTROY、 WM_SIZE、 WM_PAINT。 Windows程序設(shè)計(jì)過程即是對消息的處理過程 Windows程序的消息處理流程如下圖所示 Windows應(yīng)用程序的消息處理流程 WM_KEYDOWN WM_KEYUP WM_MOUSEMOVE WM_LBUTTONUP WM_QUIT … 應(yīng)用程序消息隊(duì)列 WinMain() 消息循環(huán) WndProc() case WM_KEYDOWN case WM_KEYUP case WM_LBUTTUP … default WM_CREATE WM_DESTROY WM_SIZE WM_PAINT … ① ④ ② GetMessage() ③ 檢索到的消息 DispatchMessage() ⑤ DefWindowProc ⑥ Windows系統(tǒng) 應(yīng)用程序 回調(diào) 消息驅(qū)動程序設(shè)計(jì) Windows程序設(shè)計(jì)方法 – 消息處理是 Windows程序設(shè)計(jì)的中心,是對發(fā)生在程序窗口中的事件的響應(yīng),程序要實(shí)現(xiàn)什么功能,要處理什么事件,只需要在窗口函數(shù)的 switch結(jié)構(gòu)中增加相應(yīng)事件的消息處理代碼即可。 【 例 103】 對例 101的窗口函數(shù)進(jìn)行修改,增加鼠標(biāo)消息處理功能,左鍵單擊該位置產(chǎn)生一個矩形,在右鍵單擊該位置產(chǎn)生一個圓。 – 設(shè)計(jì)思想:設(shè)置兩個數(shù)組分別保存鼠標(biāo)左鍵和右鍵的點(diǎn)擊位置,在每次產(chǎn)生 WM_LBUTTONDOWN和WM_RBUTTONDOWN 消息時就將鼠標(biāo)位置放入數(shù)組中,同時產(chǎn)生一條 WM_PAINT消息,導(dǎo)致 WM_PAINT消息處理中的代碼被執(zhí)行。在 WM_PAINT消息中從兩個數(shù)組內(nèi)依次取出保存的鼠標(biāo)點(diǎn),并以此點(diǎn)為中心繪制矩形和圓。 修改例 101的 WinProc程序后的代碼如下 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc 。 PAINTSTRUCT ps 。 static POINT Rect[20],Elli[20]。 //Rect保存矩形的鼠標(biāo)點(diǎn), Elli保存橢圓的鼠標(biāo)點(diǎn) static int n=0,m=0。 //n、 m分別用于記錄 Rect、 Elli中點(diǎn)的個數(shù) int i,j。 switch(message) { //消息處理 case WM_CREATE: return 0 。 case WM_LBUTTONDOWN: Rect[n].x=LOWORD(lParam)。 //計(jì)算鼠標(biāo)的 x坐標(biāo) Rect[n].y=HIWORD(lParam)。 //計(jì)算鼠標(biāo)的 y坐標(biāo) InvalidateRect(hwnd,NULL,FALSE)。 //產(chǎn)生 WM_PAINT消息 n++。 return 0。 case WM_RBUTTONDOWN: Elli[n].x=LOWORD(lParam)。 Elli[n].y=HIWORD(lParam)。 InvalidateRect(hwnd,NULL,FALSE)。 m++。 return 0。 case WM_PAINT: hdc = BeginPaint(hwnd,amp。ps) 。 for(i=0。in。i++) //繪制矩形 Rectangle(hdc,Rect[i].x,Rect[i].y,Rect[i].x+60,Rect[i].y+60)。 for(j=0。jm。j++) //繪制橢圓 Ellipse(hdc,Elli[j].x,Elli[j].y,Elli[j].x+60,Elli[j].y+60)。 EndPaint(hwnd,amp。ps)。 return 0 。 case WM_DESTROY: PostQuitMessage(0) 。 return 0 。 } return DefWindowProc(hwnd,message,wParam,lParam) 。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1