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

千張筆記

Email:rain_qian830@163.com
posts - 28, comments - 42, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

第五章 圖形基礎

圖形設備接口(GDI:Graphics Device Interface)是Windows的子系統,它負責在視頻顯示器和打印機上顯示圖形。GDI的主要目的之一是支持與設備無關的圖形。Windows程序應該能毫無困難地在Windows支持的任意一種圖形輸出設備上運行,GDI通過將您的程序和不同輸出設備的特性隔離開來的方法來達到這一目的。

<1> GDI函數調用
組成GDI的幾百個函數課分為幾個大類:
1.獲取和釋放設備描述表的函數
2.獲取有關設備描述表信息的函數
3.繪圖函數
4.設置和獲取設備描述表參數的函數
5.使用GDI對象的函數

GDI圖元:直線和曲線;填充區域;位圖;文本。
GDI的其他方面:映射模式和變換;元文件;區域;路徑;剪裁;調色板;打印。

可用GetDeviceCaps函數獲得設備描述表信息。

<2> 關于色彩
"全色"視頻顯示器的分辨率是每個像素24位-8位紅色、8位綠色、8位藍色。
"高彩色"顯示分辨率是每個像素16位-5位紅色、6位綠色、5位藍色。
256色的視頻適配器使用色彩調色板。在大多數GDI函數調用中,使用COLORREF值來表示一種色彩。COLORREF值按照紅、綠和藍色的亮度指定了一種顏色,通常叫做"RGB色彩"。
在16位或256色視頻適配器上,Windows可以使用"抖動"來模擬設備能夠顯示的顏色之外的色彩。抖動利用了由多種色彩的像素組成的像素圖案??梢哉{用GetNearestColor來決定與某一色彩最接近的純色。

<3>保存設備描述表
wndclass.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC;在窗口風格中加入CS_OWNDC,則基于這個窗口類所創建的每個窗口都將擁有自己的設備描述表,它一直存在,直到窗口被刪除。如果使用了CS_OWNDC風格,就只需初始化設備描述表一次,可以在處理WM_CREATE消息期間完成這一操作:
case WM_CREATE:
     hdc=GetDC(hwnd);
     [initialize device context attributes]
     ReleaseDC(hwnd,hdc);
CS_OWNDC風格只影響GetDC和BeginPaint獲得的設備描述表,不影響其他函數獲得的設備描述表。(如GetWindowDC)
SaveDC函數可保存改變屬性之后的hdc,RestoreDC函數可恢復調用SaveDC前存在的hdc。

<4> 畫點和線
1.寫像素
Windows GDI包含了SetPixel和GetPixel來設置像素和獲得某點像素值。
2.直線
Windows可以畫直線、橢圓線和貝塞爾樣條,Windows NT支持的畫線函數:
LineTo:畫直線
Polyline和PolylineTo:畫一系列相連的線
PolyPolyline:畫多組相連的線
Arc:畫橢圓線
PolyBezier和PolyBezierTo:畫貝塞爾樣條
ArcTo和AngleArc:畫橢圓線
PolyDraw:畫一系列相連的線以及貝塞爾樣條

下面為既畫線也能填充所畫圖形的封閉區域的函數:
Rectangle:畫矩形
Ellipse:畫橢圓
RoundRect:畫帶圓角的矩形
Pie:畫橢圓的一部分,使其看起來像一個扇形
Chord:畫橢圓的一部分,以呈弓形。
設備描述表的五個屬性影響著用這些函數所畫線的外觀:當前畫筆的位置、畫筆、背景方式、背景色和繪圖模式。

MoveToEx和LineTo畫線
GetCurrentPositionEx獲得當前位置

貝塞爾樣條:一條二維ideas貝塞爾樣條由4個點定義-兩個端點和兩個控制點。曲線的端點在兩個端點上,控制點就像磁石一樣把曲線從兩個端點間的直線處拉走。

<5> 畫筆的創建、選擇和刪除
HPEN hPen;
hPen=GetStockObject(WHITE_PEN);
SelectObject(hdc,hPen);
如上,獲得畫筆句柄,并把該句柄選進設備描述表后才能使用這個畫筆。SelectObject的返回值是此調用前設備描述表中的畫筆句柄。

邏輯畫筆是一種GDI對象,它是您可以創建的6種GDI對象之一,其他5種是刷子、位圖、區域、字體和調色板。除了調色板之外,這些對象都是通過SelectObject選進設備描述表的。

在使用畫筆等等GDI對象時,應該遵循三條規則:
1.最后要刪除自己創建的所有GDI對象;
2.當GDI對象正在一個有效的設備描述表中時,不要刪除它;
3.不要刪除現有對象。

CreatePen和CreatePenIndirect函數可以創建自己的畫筆,如:
static HPEN hPen;
hPen=CreatePen(PS_SOLID,1,0);
SelectObject(hdc,hPen);
[line-drawing functions]
然后可在WM_DESTROY期間,DeleteObject(hPen);若在WM_PAINT消息期間創建畫筆,也可在EndPaint之前或之后刪除畫筆。

<6> 畫刷
Windows有五個函數,可以創建邏輯畫刷,然后可用SelectObject將其選進設備描述表。
CreateSolidBrush
CreateHatchBrush
CreatePatternBrush
CreateDIBPatternBrushPt
CreateBrushIndirect

<7> 設備坐標和邏輯坐標
映射方式定義了Windows如何將GDI函數中指定的邏輯坐標映射為設備坐標,這里的設備坐標系取決于您用哪個函數來獲得設備描述表。

GetClientRect(hwnd,&rect); //獲得客戶區大小,為設備單位
DPtoLP(hdc,(POINT)&rect,2); //將設備坐標轉換成邏輯坐標

LPtoDP(hdc,pPoints,iNumber);將邏輯點轉換成設備點。

<8> 矩形、區域和裁剪
FillRect:用指定的畫刷填充矩形,不需要先將畫刷選進設備描述表
FrameRect:使用畫刷畫矩形框,但是不填充矩形
InvertRect:將矩形中所有像素翻轉,1換成0,0換成1

PeekMessage(&msg,NULL,0,0,PM_REMOVE)可將消息從消息隊列中刪除,如果不希望刪除消息,那最后一個參數課設置成PM_NOREMOVE。當消息隊列中有一個消息時,PeekMessage返回TRUE,并按通常方式處理消息,當隊列中沒消息,則返回FALSE。
while(TRUE)
{
      if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
      {
              if(msg.message==WM_QUIT)
              break;
              TranslateMesage(&msg);
              DispatchMessage(&msg);
       }
       else
       {
             [other program lines to do some work]
       }
}

CreateRectRgn:創建矩形區域
CreateEllipticRgn:創建橢圓區域
CreateRoundRectRgn:創建圓角的矩形區域
CreatePolygonRgn:創建多邊形區域
CombineRgn:將兩個源區域組合起來

SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL)將原點設置到客戶區的中心。


 PS:下面兩個鏈接講述GetDC和BeginPaint的區別
http://www.quanxue.cn/JC_CLanguage/Sdk/Sdk06.html
http://hi.baidu.com/joyeep/blog/item/d60c9351daabed19367abeaf.html

Feedback

# re: 【原】《Windows程序設計》第五章學習筆記  回復  更多評論   

2008-12-19 19:51 by coast
筆記做得還蠻仔細的.我一直都不太會做筆記,向你學習.
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99国产精品99久久久久久粉嫩| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲一区二区免费视频| 亚洲国产天堂久久综合网| 久久久精品国产免大香伊| 激情视频一区| 欧美国产三区| 欧美日韩一视频区二区| 午夜精品久久久久久久99热浪潮| 亚洲午夜一区二区三区| 国产日本欧美一区二区三区| 久久久久免费| 美日韩精品视频免费看| 99精品视频免费观看| 国产精品99久久久久久www| 国产伦精品一区二区三区照片91| 久久人人97超碰精品888| 老司机亚洲精品| 亚洲视频精品| 香蕉久久夜色精品| 亚洲国产91精品在线观看| 99精品国产在热久久下载| 国产人妖伪娘一区91| 亚洲观看高清完整版在线观看| 欧美日韩亚洲一区二区三区| 久久久国产视频91| 欧美久久电影| 可以免费看不卡的av网站| 欧美精品一区二区蜜臀亚洲 | 国产欧美婷婷中文| 欧美第一黄网免费网站| 欧美日韩一区三区| 欧美暴力喷水在线| 国产精品视频1区| 亚洲电影免费观看高清| 国产精品久久一区主播| 亚洲国产欧美在线人成| 国产一区二区日韩| 亚洲看片一区| 亚洲高清在线| 久久福利影视| 亚洲欧美日韩区| 欧美精品系列| 欧美大片网址| 尤物yw午夜国产精品视频明星 | 麻豆成人在线| 国产精品视频你懂的| 亚洲人成网站色ww在线| 亚洲第一伊人| 久久av免费一区| 久久精品视频播放| 国产精品久久久久久福利一牛影视| 你懂的国产精品| 激情六月婷婷综合| 午夜精品一区二区三区在线| 亚洲欧美国产精品专区久久| 欧美日韩精品免费观看视频| 亚洲国产一区二区三区青草影视| 国内精品美女在线观看| 亚洲欧美国产视频| 欧美一区二区三区精品电影| 欧美午夜免费影院| 一本久久综合| 一区二区三区四区在线| 欧美日韩成人综合| 亚洲国产欧美日韩| 日韩视频在线观看国产| 欧美激情麻豆| aa国产精品| 亚洲欧美日韩精品在线| 国产精品国产三级国产专播精品人| 亚洲精品之草原avav久久| 一本久道久久综合中文字幕| 欧美老女人xx| 国产精品99久久久久久久久| 午夜激情久久久| 国产亚洲欧美一区二区三区| 久久久91精品国产| 欧美顶级少妇做爰| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩ab| 亚洲欧美在线免费| 麻豆91精品91久久久的内涵| 亚洲国产精品专区久久| 欧美极品一区二区三区| 在线视频亚洲| 久久视频在线看| 亚洲人体偷拍| 国产精品视频| 久久综合给合| 亚洲乱码国产乱码精品精| 亚洲欧美视频| 在线观看国产欧美| 欧美日韩在线精品| 午夜欧美电影在线观看| 免费视频一区| 亚洲午夜电影网| 国产最新精品精品你懂的| 欧美成年人网| 亚洲欧美日韩一区二区在线 | 午夜视频一区| 欧美成人精品在线视频| 亚洲视频在线播放| 精品电影在线观看| 欧美日韩在线播放三区四区| 性色av一区二区三区红粉影视| 亚洲电影激情视频网站| 欧美一区二区三区男人的天堂| 亚洲国产欧美在线人成| 欧美性猛交视频| 久久五月婷婷丁香社区| 中文亚洲免费| 欧美激情一区二区| 久久精品国产综合精品| 99国产精品99久久久久久| 国产一区二区三区日韩欧美| 欧美日产一区二区三区在线观看| 久久国产加勒比精品无码| 亚洲毛片在线观看.| 免费成人高清视频| 久久国产精品久久久久久| 9人人澡人人爽人人精品| 影音国产精品| 国产乱码精品一区二区三| 欧美少妇一区二区| 欧美高清视频| 免费亚洲电影| 老鸭窝91久久精品色噜噜导演| 午夜精品久久久久久久99水蜜桃| 99成人精品| 亚洲精选国产| 亚洲成人自拍视频| 欧美激情按摩在线| 免费欧美日韩国产三级电影| 欧美一区二区网站| 欧美亚洲免费| 午夜精品久久久| 午夜精品影院在线观看| 亚洲私人影院| 亚洲综合电影| 亚洲欧美在线网| 午夜视频一区在线观看| 亚洲男人av电影| 欧美一区二区精品久久911| 先锋影音久久久| 午夜国产精品视频| 欧美一区二区三区日韩| 午夜一区在线| 久久精品亚洲热| 麻豆久久久9性大片| 久久综合久久综合久久综合| 久久久精品2019中文字幕神马| 欧美在线资源| 免费成人毛片| 亚洲国产成人午夜在线一区| 亚洲国产精品国自产拍av秋霞| 欧美激情一区二区三区不卡| 亚洲国产毛片完整版 | 久久久久.com| 麻豆精品视频在线观看| 欧美黄色一区| 欧美亚洲成人免费| 国产午夜精品视频免费不卡69堂| 国产精品丝袜91| 国语自产在线不卡| 亚洲国产精品成人久久综合一区| 亚洲精品永久免费精品| 亚洲一区二区三区涩| 久久精品视频网| 亚洲欧洲在线看| 亚洲小视频在线观看| 久久久www免费人成黑人精品 | 欧美成人第一页| 欧美色另类天堂2015| 国模大胆一区二区三区| 亚洲精品乱码视频| 亚洲欧美视频一区| 欧美大片在线观看| 亚洲色图制服丝袜| 欧美一区深夜视频| 欧美精品123区| 国产一区二区三区在线免费观看 | 亚洲高清123| 亚洲免费在线观看| 欧美成人一品| 午夜精品三级视频福利| 欧美成人精品激情在线观看| 国产日韩精品入口| 99在线热播精品免费| 久久久久久久成人| 日韩一二在线观看| 美女日韩欧美| 国产日韩欧美在线视频观看| 亚洲乱码一区二区| 久久噜噜噜精品国产亚洲综合| 免费国产自线拍一欧美视频| 99国产精品一区| 老司机精品视频网站| 国产精品视频一二三| 亚洲精品中文字幕有码专区|