GDI绘图对象
//把 hGDIObj 设置给 hdc
HGDIOBJ SelectObject( //返回的是原来的GDI绘图对象的句柄
HDC hdc,
HGDIOBJ hGDIObj //GDI绘图对象的句柄
);
//释放我们创建的 OBJ,释放我们创建的新画笔、画刷等(释放空间)
BOOL DeleteObject(HGDIOBj hObj);
画笔
线条颜色、线条类型、线条粗细
句柄:HEPN
HPEN CreatePen(
int fnPenStyle,// PS_XXX Pen Style (仅仅PS_SOLID 支持多个像素宽)
int nWidth,
COLORREF crColor
);
画刷
为封闭图形填充颜色,图案(我们在画矩形等类似的封闭图形的时候,画刷都会自动填充)
HBRUSH: 画刷句柄
CreateSolidBrush();
CreateHatchBrush(); //填充纹理线
SelectObject();
...(绘图)
SelectObject();
DeleteObject()
透明画刷(可以向Win接GDI对象)
GetStockObject(); //向Win借用GDI对象
字体
win32常用的字体为TrueType[保存这每一个字的外观]格式的字体文件
只有打开字体的文件,才能真正看到字体的名字
HFONT-字体的句柄
- CreateFont(); 创建字体
- SelectObject(); 配置字体
- OnPaint(); 绘制文字
- SelectObject(); 取出字体
- DelectObject(); 删除字体 [很有必要,因为字体占用的空间很大]
HFONT CreateFont( //其实看为加载字体更好,因为此时也是在系统的目录下面把字体用上来
INT nHeight, //字体的逻辑高度
INT nWidth, //逻辑平均字符宽度
INT nEscapement, //字符串的倾斜角度
INT nOrientation, //旋转角度角度
INT fnWeightde, //字体粗细
DWORD fdwItalic, //斜体属性标志
DWORD fdwUnderline, //下划线属性标志
DWORD fdwStrikeOut, //删除属性标志
DWORD fdwCharSet, //字符集标识符 //一般使用宏 GB2312_CHARSET
DWORD fdwOutputPrecision, //输出精度 //快废弃了
DWORD fdwClipPrecision, //剪辑精度 //快废弃了
DWORD fdwQuality, //输出质量 //快废弃了
DWORD fdwPitchAndFamily, //匹配字体 //快废弃了
LPCTSTR lpszFace //指向字体名称字符串的指针[字体名称]
);
位图(同时属于资源GDI对象[操作两者集合])
图形的分类[光栅图片(记录每一个点的颜色位置等信息),矢量图形(记录图像的算法,指令等)]
位图属于光栅图形
位图就是BMP为后缀名的图片
HBITMAP 位图句柄
位图的使用
- 添加位图资源 //直接可视化操作
- LoadBitMap() //在进程里面找到位图
- 创建一个于当前DC匹配的DC(内存DC[内存DC的理解很重要])
- 将位图的数据给内存DC SelectObject();[在虚拟区域画出来,这样就可以一瞬间展示出来]
- 成像(1:1不是画图,类似抄作业) BitBlt[Bit Block transfer]
- 取出位图 SelectObject()
- 释放位图 DeleteObject()
- 释放匹配的DC DeleteDC()
HDC CreateCompatibleDc( //创建好的句柄
HDC hdc //当前的DC句柄,为NULL的时候表示借用屏幕的DC
);
//成像使用的API
BOOL BitBlt(
HDC hdcDest, //目的的DC
int nXDest,
int nYDest,
int nWidth,
int nHeight,
HDC hdcSrc, //源DC
int nXSrc, //src上面的开始位置
int nYSrc
DWORD dwRop //成像的方法 [SRCOPY]
);
//缩放成像 BOOL StretchBlt()
调色板
. . .