青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Sunshine Alike

半完美主義

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  35 Posts :: 1 Stories :: 56 Comments :: 0 Trackbacks

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51327
  • 排名 - 451

最新隨筆

最新評論

Windows 圖形設備接口( Graphics Device Interface, GDI )是為與設備無關的圖形設計的,由操作系統屏蔽了硬件設備的差異,簡化了程序員的程序編寫工作。

?

??????????? 設備上下文( Device Context, DC

定義了一系列圖形對象及其屬性的結構,包括圖形模式及輸出。 PS DC 一詞的翻譯上有些疑惑,不明白為什么這么叫。 context: 背景,環境,上下文

目前設備上下文有四種類型:顯示,打印,存儲和消息類型。

圖形對象及其屬性:

位圖,畫刷,調色板,字體,畫筆,區域

應用程序每一次圖形操作均參照設備 上下文 中的屬性執行, DC 可以看作是圖形的“輸出模板”。

?

??????????? 圖形刷新

Windows 應用程序在使用過程中,窗口大小的調整,窗口移動或者被其它窗口覆蓋后,都必須要刷新原窗口內用戶區顯示的內容。但是 windows 系統只能在有限的幾種情況下自動刷新。因此應用程序必須具有及時處理刷新請求和刷新響應的功能。

Windows 系統通常通過發送 WM_PAINT 消息將刷新請求傳遞給應用程序。一般情況下,刷新有三種可能:

(1)????? 窗口移動后的刷新
用戶區移動,窗口大小改變,滾動條的使用等

(2)????? 被覆蓋區域的刷新
下拉式菜單關閉后需恢復被覆蓋部分,清除消息框后進行的恢復等

(3)????? 對象穿越后的刷新
光標穿過用戶區,圖標拖過用戶區等

Windows 系統為每個窗口建立了一個 PAINTSTRUCT 結構,該結構中包含了指明一個窗口被另一個窗口覆蓋的“無效區域”的最小矩形結構 RECT ,程序可根據這個矩形進行刷新。

常用刷新方法包括:

(1)????? 保持一個顯示輸出副本,需要時重繪窗口

(2)????? 記錄發生的事件,需要時重新調用該事件

(3)????? 重新繪圖,簡單圖形常用的方法

?

??????????? 獲取設備 上下文
獲取設備 上下文 是應用程序輸出圖形的先決條件,常用函數有:
BeginPaint????? 響應 WM_PAINT 消息進行圖形刷新
GetDC??????????
WM_PAINT 消息驅動時用于獲取設備 上下文
GetDCEx???????
返回指向特定窗口客戶區的整個窗口句柄,是 GetDC 的擴展

??????????? 繪圖工具與顏色

1.???????? 畫筆 & 畫刷
畫筆的功能是用來畫直線和曲線,畫刷用于指定區域的填充
可以使用 CreatePen CreateBrush 創建自定義畫筆畫刷,也或以使用 GetStockObject 函數獲取系統默認的樣式。
HPEN hPen = CreatePen

(

?????? int nPenStyle,

?????? int nWidth,

?????? COLORREF rgbColor

);

????????????? HBRUSH hBrush = CreateBrush

??????????????????????????? (

?????????????????????????????????? int nHatchStyle,

?????????????????????????????????? COLORREF rgbColor

)

????????????? 畫筆畫刷不再使用時應使用 DeleteObject 函數刪除并釋放資源

2.???????? 顏色
winodws
使用宏 RGB 定義繪圖顏色 ????????? RGB(nRed, nGreen, nBlue)

其中 nRed, nGreen, nBlue 分別表示紅,綠,藍的數值。

3.???????? 常用繪圖函數

(1)????? BOOL ??? MoveToEx
{

HDC hdc,

int x, int y,

LPPOINT lpPoint?? // 存放原畫筆位置的 POINT 結構

}

(2)????? BOOL LineTo
{

HDC hdc,

int x, int y

}

(3)????? BOOL Rectangle
{

HDC hdc,

int x1, int y1,???????? // 矩形左上角邏輯坐標

int x2, int y2????????? // 矩形右下角邏輯坐標

}

(4)????? BOOL Polygon
{

HDC hdc,

LPPOINT lpPoints,????????????? // 包含各頂點坐標的 POINT 數組

int nCount??????????????????? // 多邊形頂點個數

}

?

?

??????????? 應用實例 簡單的圖形繪制

#include? windows.h >

#include?
math.h >

?

const ? double ?pi? = ? 3.1415926 ;

?

LRESULT?CALLBACK?WndProc(HWND?hWnd,?UINT?iMsg,?UINT?wParam,?LONG?lParam)

{

???????HDC?hDC;

???????HBRUSH?hBrh;

???????HPEN?hPen;

???????POINT?oldPt;

???????PAINTSTRUCT?ptStr;
// 定義繪圖信息結構體

???????
switch (iMsg)

???????
{

???????
case ?WM_PAINT: // 處理繪圖信息

??????????????hDC?
= ?BeginPaint(hWnd,? & ptStr); // 獲取設備上下文

??????????????SetMapMode(hDC,?MM_TEXT);
// 設置映射模式

?

??????????????hPen?
= ?(HPEN)GetStockObject(BLACK_PEN); // 獲取默認黑色畫筆

??????????????SelectObject(hDC,?hPen);
// 將畫筆選入
設備上下文

??????????????hBrh?
= ?(HBRUSH)(GetStockObject(DKGRAY_BRUSH)); // 深灰色畫刷

??????????????SelectObject(hDC,?hBrh);

??????????????RoundRect(hDC,?
50 ,? 50 ,? 200 ,? 350 ,? 25 ,? 25 ); // 圓角矩形

??????????????hBrh?
= ?(HBRUSH)(GetStockObject(HOLLOW_BRUSH)); // 虛畫刷,填充無效果

??????????????SelectObject(hDC,?hBrh);

??????????????Pie(hDC,?
300 ,? 50 ,? 400 ,? 300 ,? 300 ,? 50 ,? 400 ,? 50 ); // 餅圖

?

??????????????
// 一個五角星

??????????????MoveToEx(hDC,?
500 ,? 150 ,? & oldPt);

??????????????LineTo(hDC,?
650 ,? 150 );

??????????????LineTo(hDC,?
525 ,? 250 );

??????????????LineTo(hDC,?
575 ,? 100 );

??????????????LineTo(hDC,?
625 ,? 250 );

??????????????LineTo(hDC,?
500 ,? 150 );

?

??????????????
// 坐標系

??????????????MoveToEx(hDC,?
700 ,? 150 ,? & oldPt);

??????????????LineTo(hDC,?
700 ,? 300 );

??????????????LineTo(hDC,?
1500 ,? 300 );

??????????????MoveToEx(hDC,?
700 ,? 300 ,? & oldPt);

??????????????
// 近似的正弦曲線

??????????????
for ( int ?i = 0 ;?i ? 3000 ;? ++ i)

??????????????
{

?????????????????????LineTo(hDC,?
700 + i * 20 ,? 300 - sin(i) * 20 );

??????????????}


?

??????????????EndPaint(hWnd,?
& ptStr); // 結束繪圖

??????????????
return ? 0 ;

???????
case ?WM_DESTROY:

??????????????PostQuitMessage(
0 );

??????????????
return ? 0 ;

???????
default : // 其它消息的默認處理函數

??????????????
return ?(DefWindowProc(hWnd,?iMsg,?wParam,?lParam));

???????}


}


?

// 對窗口進行初始化

BOOL?InitWindow(HINSTANCE?hInst,?
int ?nCmdShow)

{

???????HWND?hWnd;

???????hWnd?
= ?CreateWindow( " WinFill " ,? // 類名

??????????????????????????????????????????
" 填充示例 " ,???? // 標題

??????????????????????????????????????????WS_SYSMENU,????
// 窗口風格

??????????????????????????????????????????
0 ,? 0 ,? // 窗口左上角坐標

??????????????????????????????????????????CW_USEDEFAULT,?CW_USEDEFAULT,????
// 窗口寬高

??????????????????????????????????????????NULL,?NULL,

??????????????????????????????????????????hInst,

??????????????????????????????????????????NULL);

???????
if ( ! hWnd)

???????
{

??????????????
return ?FALSE;

???????}


???????ShowWindow(hWnd,?nCmdShow);

???????UpdateWindow(hWnd);

???????
return ?TRUE;

}


?

BOOL?InitWindowClass(HINSTANCE?hInst)

{

???????WNDCLASS?wndClass;

???????wndClass.cbClsExtra?
= ? 0 ;

???????wndClass.cbWndExtra?
= ? 0 ;

???????wndClass.hbrBackground?
= ?(HBRUSH)GetStockObject(WHITE_BRUSH);

???????wndClass.hCursor?
= ?LoadCursor(NULL,?IDC_ARROW);

???????wndClass.hIcon?
= ?LoadIcon(NULL,? " END " );

???????wndClass.hInstance?
= ?hInst;

???????wndClass.lpfnWndProc?
= ?WndProc;

???????wndClass.lpszClassName?
= ? " WinFill " ;

???????wndClass.lpszMenuName?
= ? " NULL " ;

???????wndClass.style?
= ?CS_HREDRAW? | ?CS_VREDRAW;

?

???????
return ?RegisterClass( & wndClass);

}


?

int ?APIENTRY?WinMain(HINSTANCE?hInstance,

?????????????????????HINSTANCE?hPrevInstance,

?????????????????????LPSTR?????lpCmdLine,

?????????????????????
int ???????nCmdShow)

{

???????MSG?msg;

???????
if ( ! InitWindowClass(hInstance))

???????
{

??????????????
return ?FALSE;

???????}


???????
if ( ! InitWindow(hInstance,?nCmdShow))

???????
{

??????????????
return ?FALSE;

???????}


???????
while (GetMessage( & msg,? 0 ,? 0 ,? 0 ))

???????
{

??????????????TranslateMessage(
& msg);

??????????????DispatchMessage(
& msg);

???????}


???????
return ?msg.wParam;

}

posted on 2009-03-10 21:09 Sunshine Alike 閱讀(2716) 評論(0)  編輯 收藏 引用 所屬分類: WinAPI應用程序
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲日韩欧美视频| 亚洲一区二区少妇| 亚洲黄色片网站| 欧美激情va永久在线播放| 久久久久久久久久久成人| 红桃视频国产一区| 亚洲国产免费| 久久免费国产| 欧美激情精品| 美女主播一区| 一区二区三区国产精华| 欧美激情1区2区| 狠狠色丁香婷综合久久| 亚洲欧美日韩一区二区在线| 欧美激情在线| 美女图片一区二区| 国产亚洲精品7777| 欧美一区二区精品在线| 亚洲欧美国内爽妇网| 欧美日一区二区在线观看| 一区二区三区日韩欧美精品| 亚洲激情偷拍| 欧美激情综合亚洲一二区| 日韩午夜在线播放| 亚洲精品日韩激情在线电影 | 一本一道久久综合狠狠老精东影业| 亚洲欧洲一区二区天堂久久| 999亚洲国产精| 亚洲国产精品999| 欧美大尺度在线| 99精品国产高清一区二区| 亚洲精品自在在线观看| 欧美日韩亚洲一区二区三区在线观看 | 久久综合99re88久久爱| 在线日本高清免费不卡| 欧美激情亚洲激情| 欧美日韩高清在线一区| 亚洲一区二区黄色| 亚洲一区二区三区777| 国产日韩亚洲欧美精品| 欧美在线视频网站| 在线不卡中文字幕播放| 亚洲电影免费在线| 欧美日韩一区二区免费视频| 午夜精品福利在线| 久久久亚洲精品一区二区三区| 亚洲三级影院| 亚洲一区精品在线| 亚洲国产女人aaa毛片在线| 9色国产精品| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲国产一区二区在线| 国产精品国产三级欧美二区 | 久久精品国产亚洲aⅴ| 亚洲电影激情视频网站| 一区二区欧美激情| 在线观看国产成人av片| 在线一区亚洲| 亚洲人成在线播放| 性欧美精品高清| 夜夜爽www精品| 久久精品国产免费看久久精品| 伊人久久大香线| 99国内精品久久| 亚洲人成网站色ww在线| 久久久www免费人成黑人精品| 亚洲在线视频免费观看| 欧美sm视频| 美日韩免费视频| 国产欧美午夜| 亚洲深夜福利| 一本一本久久a久久精品牛牛影视| 久久高清免费观看| 亚洲欧美综合国产精品一区| 欧美日韩成人综合在线一区二区| 欧美xart系列高清| 国产亚洲精品bv在线观看| 在线亚洲精品福利网址导航| 日韩西西人体444www| 一区二区三区你懂的| 免费视频一区| 免费成人性网站| 黑人一区二区| 久久精品天堂| 久久亚洲国产成人| 国产欧美日韩不卡免费| 亚洲免费观看视频| 国产一区二区三区在线观看免费视频 | 亚洲精品一区二| 一区二区三区中文在线观看| 亚洲在线观看视频| 亚洲一区二区三区四区五区午夜| 欧美激情在线免费观看| 亚洲国产电影| 99国产精品| 欧美成熟视频| 最新国产成人av网站网址麻豆| 亚洲激情黄色| 欧美激情视频一区二区三区免费| 欧美暴力喷水在线| 91久久国产综合久久| 免费观看一级特黄欧美大片| 欧美电影免费观看高清| 亚洲黄色免费网站| 欧美日韩成人| 日韩天堂在线观看| 亚洲免费伊人电影在线观看av| 国产精品va在线播放| 亚洲摸下面视频| 久久在线免费| 99re8这里有精品热视频免费 | 亚洲永久免费av| 午夜精品视频| 韩日欧美一区二区三区| 模特精品在线| 99www免费人成精品| 亚洲午夜国产成人av电影男同| 欧美激情第三页| 日韩一级在线观看| 一区二区亚洲精品国产| 欧美一级艳片视频免费观看| 久久婷婷av| 亚洲三级视频| 国产精品另类一区| 欧美一区1区三区3区公司| 欧美**人妖| 一区二区不卡在线视频 午夜欧美不卡在 | 一区国产精品| 欧美精品aa| 亚洲欧美另类综合偷拍| 欧美不卡激情三级在线观看| 国产精品99久久久久久久久| 国产欧美日韩不卡免费| 欧美自拍偷拍| 国产精品美女久久久久av超清 | 欧美一区2区三区4区公司二百| 久久这里有精品视频 | 亚洲靠逼com| 国产欧美一区二区精品秋霞影院 | 久久在线91| 亚洲美洲欧洲综合国产一区| 午夜精品久久久久久久白皮肤| 在线日韩av永久免费观看| 欧美日韩理论| 久久久久国产精品午夜一区| 一区二区三区视频在线观看| 欧美成人精品在线| 久久精品综合一区| 亚洲小视频在线观看| 亚洲日产国产精品| 国外视频精品毛片| 国产精品一区免费观看| 欧美精品在线观看| 老司机一区二区三区| 欧美一区二区免费| 亚洲一区二区视频在线| 亚洲欧洲综合另类| 国内精品久久久久久久影视蜜臀| 欧美大片一区| 久久久久九九九九| 在线视频欧美日韩| 最近看过的日韩成人| 久久国产高清| 中国成人黄色视屏| 亚洲国产成人高清精品| 国产精品影院在线观看| 欧美另类在线播放| 久久深夜福利免费观看| 亚洲欧美中文日韩v在线观看| 日韩视频欧美视频| 欧美大学生性色视频| 久久国产精品久久国产精品| 中文无字幕一区二区三区| 最新中文字幕一区二区三区| 激情综合亚洲| 伊人一区二区三区久久精品| 精品91视频| 韩国成人理伦片免费播放| 国产精品推荐精品| 国产精品video| 国产精品一二三四| 国产精品九色蝌蚪自拍| 亚洲视频在线观看视频| 亚洲乱码国产乱码精品精| 亚洲激情综合| 亚洲黄色精品| 亚洲欧洲精品一区二区| 最新国产乱人伦偷精品免费网站 | 久久黄色小说| 亚洲中字在线| 亚洲欧美日韩成人| 新狼窝色av性久久久久久| 欧美一区二区三区四区在线观看| 性欧美在线看片a免费观看| 欧美一区午夜视频在线观看| 久久久蜜桃一区二区人| 欧美成人一区二区| 欧美日韩精品系列| 国产麻豆日韩欧美久久| 在线观看欧美日韩|