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

Jiang's C++ Space

創作,也是一種學習的過程。

   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::

【20060307發表于blog.csdn.net,20090403重編輯】

1、GDI名字的意義
GDI Graphic Device Interface,我說不清和GUI有什么區別。可能一種針對設備,一種針對用戶而言吧,反正以后都說GDI,也就是Windows的圖形編程。

2、設備描述上下文HDC
Handle Device Context
這個是關鍵的關鍵,可以理解成畫圖的環境,何謂環境?畫板,紙,筆,尺寸,字體,顏色,區域等。反正包括你能想到的和未能想到的了。要畫出不同的圖形,很大程度上是對HDC的修改。

3、HDC的創建方式
WM_PAINT消息來的時候,用:

hdc = BeginPaint(hwnd, &ps);
//...
EndPaint(hwnd, &ps);

結束后ps區域自動變有效。還有:

hdc = GetDC(hwnd);
//...
ReleaseDC(hwnd, hdc);

這一對需要調用ValidateRect()函數來使得區域有效。

還有別的辦法,但不常用,這里略過。不過有一個還是值得一說,那就是取得Window HDC的辦法,用它可以在Windows非客戶區畫圖:

hdcWindow = GetWindowDC(hwnd);
//...
ReleaseDC(hwnd, hdcWindow);


4、獲取HDC信息
GetDeviceCaps()
其中比較重要的指標是:
HORZRES - horizontal resolution
VERTRES - vertical resolution
BITSPIXEL - 色深

5、保存HDC與還原HDC

SaveDC(hdc);
RestoreDC(hdc, 
-1);


6、畫圖畫圖!

//[偽碼]

// ----- 點 -----
//畫點
SetPixel(hdc, x, y, crColor);
//取點顏色
crColor = GetPixel(hdc, x, y);

// ----- 直線 -----
//最后一參數為NULL表示不返回最后點
MoveToEx(hdc, x, y, lpPrevPoint);
//畫線
LineTo(hdc, x, y);
//畫多線,不移動當前點
Polyline(hdc, lpPoint, cPointNum);
//畫多線,移動當前點
PolylineTo(hdc, lpPoint, cPointNum);
//畫多組多線
PolyPolyline(hdc, lppt, lpNum, cCount);

//----- 曲線 -----
//畫橢圓線
Arc();
//畫比澤爾曲線,不移動但前點
PolyBezier();
//畫比澤爾曲線,移動當前點
PolyBezierTo();

//----- 區域 -----
//畫矩形
Rectangle();
//畫橢圓
Ellipse();
//畫帶圓角的矩形
RoundRect();
//畫扇
Pie();
//畫弓
Chord();


7、畫筆HPEN(改變線條)
方法1:
HPEN hPen = GetStockObject(ARGUMENTS);
ARGUMENTS為:BLACK_PEN 黑筆WHITE_PEN 白筆

HPEN hPen = SelectObject(hdc, GetStockObject(WHITE_PEN));
DelectObject(hPen);

方法2:
HPEN hPen = CreatePen(iPenStyle, iWidth, crColor);
iPenStyle為:PS_SOLID實線PS_DASH虛線PS_DOT點線PS_DASHDOT虛點線PS_DASHDOTDOT虛雙點線PS_NULL空線PS_INSIDEFRAME??

DeleteObject(SelectObject(hdc, GetStockObject(BLACK_PEN)));

獲取畫筆信息:

GetObject(hPen, sizeof(LOGPEN), (LPVOID)&logpen);

選出HDC中的畫筆:

hPen = GetCurrentObject(hdc, OBJ_PEN);


8、背景模式
改變背景模式,也就是制定虛線間間隙的填充問題了:

SetBkColor(hdc, crColor);
SetBkMode(hdc, TRANSPARENT);
SetBkMode(hdc, OPAQUE);

有Set嘛,相應地有Get了,這里略過。

9、疊加模式

SetROP2(hdc, iDrawMode);
iDrawMode 
= GetROP2(hdc);


10、畫刷HBRUSH(改變填充)
畫刷能指明區域填充模式。
方法1:

HBRUSH hBrush = GetStockObject(GRAY_BRUSH);
SelectObject(hdc, hBrush);

方法2:

HBRUSH hBrush = CreateSolidBrush(crColor);
HBRUSH hBrush 
= CreateHatchBrush(iHatchStyle, crColor);


11、多邊形填充模式及畫多邊形

SetPolyFillMode(hdc, iMode); //iMode:ALTERNAME WINDING
Polygon();

12、區域HRGN(繪畫范圍)

HRGN hRgn = CreateRectRgn(x1, y1, x2, y2);
HRGN hRgn 
= CreateRectRgnIndirect(&rect);
HRGN hRgn 
= CreateEllipticRgn(x1, y1, x2, y2);
HRGN hRgn 
= CreateEllipticRgnIndirect(&rect);

區域合并

CombineRgn(hDestRgn, hSrcRgn1, hSrcRgn2, iCombine); //iCombine: RGN_AND, RGN_OR, RGN_XOR, RGN_DIFF, RGN_COPY

注意:hDestRgn, hSrcRgn1, hSrcRgn2都必須有效。

FillRgn(); //填充區域。
FrameRgn(); //給區域畫邊。
InvertRgn(); //反轉區域。
HRGN hRgnPrev = SelectObject(hdc, hRgn); //將區域放置入HDC。

使區域無效/有效:

InvalidateRgn(hRgn);
ValidateRgn(hRgn);
posted on 2009-04-03 19:02 Jiang Guogang 閱讀(1629) 評論(0)  編輯 收藏 引用 所屬分類: Windows Programming
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美1区2区3区| 亚洲视频在线观看一区| 亚洲第一在线综合网站| 欧美日韩 国产精品| 欧美黄在线观看| 亚洲无限av看| 久久av一区二区三区| 欧美精品系列| 日韩西西人体444www| 欧美成人精品一区| 午夜亚洲影视| 久久精品首页| 国产精品视频免费观看www| 影音先锋一区| 久久国产日韩欧美| 欧美一区二区成人| 极品中文字幕一区| 亚洲精品久久久久久久久久久久久| 亚洲啪啪91| 欧美极品影院| 亚洲视频狠狠| 亚洲国产精品日韩| 亚洲免费播放| 国产精品久久久久一区二区三区 | 国模精品一区二区三区| 欧美在线国产精品| 一区二区久久| 开元免费观看欧美电视剧网站| 亚洲自拍16p| 国产精品第三页| 亚洲影音一区| 在线亚洲激情| 伊人久久综合97精品| 亚洲欧洲精品天堂一级| 亚洲欧洲一区二区三区久久| 国产精品一区免费观看| 久久亚洲综合色| 欧美日韩在线看| 欧美激情一区二区三区在线视频 | 99v久久综合狠狠综合久久| 亚洲国产精品久久久久婷婷884| 亚洲高清在线观看| 久久久久青草大香线综合精品| 欧美在线观看一区二区| 亚洲欧美日韩中文视频| 亚洲一区二区在线看| 在线视频亚洲欧美| 亚洲欧美欧美一区二区三区| 欧美午夜久久久| 六月丁香综合| 国产亚洲精品久久久| 亚洲一区在线观看视频| 亚洲久久在线| 欧美日韩亚洲三区| 一区二区激情小说| 亚洲精品国精品久久99热| 欧美一级二区| 亚洲国产精品www| 日韩视频在线观看国产| 国产精品大片wwwwww| 免费观看日韩av| 91久久精品日日躁夜夜躁国产| 国产日韩亚洲欧美综合| …久久精品99久久香蕉国产| 激情偷拍久久| 欧美一区二区黄色| 国产精品久久久久9999高清 | 精品91在线| 欧美激情视频一区二区三区在线播放 | 欧美一级二区| 国产精品视频久久一区| 久久国产夜色精品鲁鲁99| 欧美mv日韩mv国产网站| 欧美亚洲一区三区| 欧美亚男人的天堂| 欧美一区二区成人| 国内精品久久久久影院优| 一本一本久久| 久久久久久久久久久久久9999 | 好看的亚洲午夜视频在线| 亚洲欧洲视频在线| 免费欧美日韩| 欧美亚洲免费| 国产精品国产三级国产aⅴ入口| 国内成+人亚洲| 一本色道久久综合亚洲精品不卡 | 亚洲综合视频1区| 国产欧美日韩三级| 国产精品看片你懂得| 久久三级视频| 久久久久久亚洲精品中文字幕| 欧美.www| 国内视频精品| 欧美精品一区二区在线播放| 亚洲电影下载| 国产精品乱码妇女bbbb| 亚洲夜晚福利在线观看| 亚洲福利视频专区| 欧美成人一区二免费视频软件| 激情自拍一区| 亚洲高清不卡在线观看| 欧美91福利在线观看| 亚洲精品中文字幕女同| 欧美激情第一页xxx| 欧美激情精品久久久久久| 日韩视频免费观看高清在线视频| 免费视频亚洲| 国产欧美激情| 欧美一区二区在线看| 亚洲日本免费| 亚洲精品国产精品国自产观看| 亚洲大片精品永久免费| 99视频精品全部免费在线| 一区二区三区欧美| 欧美日韩在线一区二区| 韩日精品在线| 国产老女人精品毛片久久| 一本久道久久综合中文字幕| 欧美中文在线免费| 亚洲一区免费在线观看| 国产婷婷色一区二区三区在线| 欧美在线播放高清精品| 久久婷婷人人澡人人喊人人爽| 麻豆成人在线| 一区二区三区国产在线| 91久久国产自产拍夜夜嗨| 亚洲欧洲精品一区二区三区波多野1战4| 欧美人与禽性xxxxx杂性| 久久不射2019中文字幕| 欧美性猛交99久久久久99按摩| 欧美一区二区三区啪啪| 欧美日韩国产麻豆| 亚洲福利视频免费观看| 尤物网精品视频| 久久激情综合| 欧美中文字幕在线观看| 国产日韩欧美综合| 亚洲一区精品视频| 国产欧美日韩综合| 一区二区日韩| 噜噜噜在线观看免费视频日韩 | 影音先锋欧美精品| 香蕉久久夜色精品国产| 亚洲午夜久久久久久久久电影网| 欧美精品一区视频| 亚洲精品一区在线| 亚洲视频在线观看| 国产精品剧情在线亚洲| 午夜精品福利视频| 亚洲视频在线看| 亚洲影视中文字幕| 欧美在现视频| 黄色国产精品| 久久亚洲精品一区| 欧美www在线| 亚洲精品在线免费| 欧美日韩在线视频一区| 亚洲一区二区三区免费视频| 欧美在线精品免播放器视频| 国产欧美婷婷中文| 久久久久久久999精品视频| 女生裸体视频一区二区三区| 亚洲国产精品综合| 欧美日韩视频在线一区二区| 99香蕉国产精品偷在线观看| 亚洲女性裸体视频| 国产一区二区三区久久精品| 久久久另类综合| 亚洲精品久久久一区二区三区| 亚洲精品久久视频| 欧美日韩一卡二卡| 亚洲桃花岛网站| 欧美一区二区三区久久精品| 在线观看91久久久久久| 欧美日韩国产欧| 亚洲综合不卡| 亚洲第一页在线| 午夜精品久久久久久久白皮肤| 欧美性大战久久久久久久| 亚洲欧美日韩在线不卡| 嫩草成人www欧美| 亚洲欧美怡红院| 亚洲国产欧美在线人成| 国产精品久久久久久久久久ktv| 午夜精品久久久久99热蜜桃导演| 一本综合精品| 国产欧美日韩中文字幕在线| 欧美激情成人在线| 销魂美女一区二区三区视频在线| 亚洲第一级黄色片| 亚洲男人的天堂在线aⅴ视频| 亚洲国产精品va在线观看黑人 | 夜夜嗨av色综合久久久综合网 | 一区二区三区|亚洲午夜| 久久噜噜噜精品国产亚洲综合| 在线一区二区三区做爰视频网站| 国产在线不卡精品| 久久综合亚州| 亚洲欧美精品suv| 一本色道久久综合狠狠躁篇怎么玩|