首页 > 代码库 > Win32 Windows编程 十一

Win32 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编程 十一