標籤:win32 gdi 位元影像 編程 windows
一、位元影像的使用
1 位元影像 - 通過儲存映像上每個點的顏色,產生相應的位元影像檔案
光柵圖 - 可以理解為映像點陣的儲存
向量圖 - 可以理解為繪圖命令的儲存
2 位元影像的使用
2.1 載入位元影像
LoadBitmap
2.2 建立放置位元影像的DC
CreateCompatibleDC
2.3 將位元影像放入建立的DC中
SelectObject
2.4 繪製位元影像到當前DC中
BitBlt
StretchBlt 可以實現映像的縮放,但是縮放的效果不好
2.5 取出位元影像
SelectObject
2.6 刪除建立的DC
DeleteDC
2.7 刪除位元圖
DeleteObject
2.8 擷取位元影像資訊
int GetObject( HGDIOBJ hgdiobj, // handle to graphics object GDI物件控點 這裡就是HBITMAP int cbBuffer, // size of buffer for object information 位元影像資訊的BUFF的大小 LPVOID lpvObject // buffer for object information 位元影像資訊的BUFF指標);
位元影像的BUFF結構為BITMAP結構
二 座標系和映射模式
1 座標系
1.1 裝置座標系
裝置座標系以像素為單位,x正方向從左往右,y正方向從上往下
螢幕座標系 - 以螢幕的左上方為(0,0)點
視窗座標系 - 以視窗最外邊框的左上方為(0,0 )點
客戶區座標系 - 以視窗內的客戶區的左上方為(0, 0) 點
1.2 邏輯座標系
以邏輯單位定義的座標系。繪圖過程中使用的座標基本是以邏輯座標系繪製 預設情況下和裝置座標系保持一致,
但是可以修改
2 映射模式
邏輯座標系和裝置座標系之間的映射關係
2.1 映射模式的種類
MM_TEXT - 預設的映射方式,邏輯座標系和裝置座標系一致
MM_LOMETRIC - 0.1MM X 方向一致 Y方向相反
MM_HIMETRIC - 0.01MM X 方向一致 Y方向相反
MM_LOENGLISH - 0.1inX 方向一致 Y方向相反
MM_HIENGLISH - 0.01inX 方向一致 Y方向相反
MM_TWIPS - 1/1400in 方向一致 Y方向相反
MM_ANISOTROPIC - 可以指定邏輯單位 XY方向可以指定 X軸單位可以不等於 Y軸單位
MM_ISOTROPIC - 可以指定邏輯單位 XY的方向也可以指定, X軸單位 = Y軸單位
3 映射模式的使用
3.1 設定映射模式
int SetMapMode( HDC hdc, // handle to device context 映射的控制代碼 int fnMapMode // new mapping mode 新的映射方式); //返回舊的映射模式
3.2 繪圖
3.3 回複舊映射模式
int SetMapMode( HDC hdc, // handle to device context int fnMapMode // new mapping mode);
3.4 MM_ISOTROPIC
需要自己設計X/Y軸的正方向以及邏輯單位和裝置單位的比例
裝置座標 像素
BOOL SetWindowExtEx( HDC hdc, // handle to device context int nXExtent, // new horizontal window extent int nYExtent, // new vertical window extent LPSIZE lpSize // original window extent);
邏輯座標
BOOL SetViewportExtEx( HDC hdc, // handle to device context int nXExtent, // new horizontal viewport extent int nYExtent, // new vertical viewport extent LPSIZE lpSize // original viewport extent);
通過添加加號或減號設定Y軸方向
Win32 Windows編程 十一