一、位图的使用
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轴方向