Windows 程序设计基础知识总结(二)
绘图
术语名词解释
GDI Graphics Device Interface, 图形设备接口
DC Device Context, 设备描述表,类型分为:显示、打印、存储、消息类型。
MM Map Mode 映射模式
COLORREF 表示颜色,形式为 RGB(R, G, B)
常用函数
HDC
WINAPI
GetWindowDC (
_In_opt_ HWND hWnd) ;
HDC
WINAPI
GetDC (
_In_opt_ HWND hWnd) ;
HDC
WINAPI
GetDCEx (
_In_opt_ HWND hWnd,
_In_opt_ HRGN hrgnClip,
_In_ DWORD flags) ;
int
WINAPI
ReleaseDC (
_In_opt_ HWND hWnd,
_In_ HDC hDC) ;
HDC
WINAPI
BeginPaint (
_In_ HWND hWnd,
_Out_ LPPAINTSTRUCT lpPaint) ;
BOOL
WINAPI
EndPaint (
_In_ HWND hWnd,
_In_ CONST PAINTSTRUCT * lpPaint) ;
int WINAPI SetMapMode ( _In_ HDC hdc, _In_ int iMode) ;
int WINAPI GetMapMode ( _In_ HDC hdc) ;
BOOL
WINAPI
SetViewportExtEx (
_In_ HDC hdc,
_In_ int x,
_In_ int y,
_Out_opt_ LPSIZE lpsz) ;
BOOL
WINAPI
SetViewportOrgEx (
_In_ HDC hdc,
_In_ int x,
_In_ int y,
_Out_opt_ LPPOINT lppt) ;
BOOL
WINAPI
SetWindowExtEx (
_In_ HDC hdc,
_In_ int x,
_In_ int y,
_Out_opt_ LPSIZE lpsz) ;
BOOL
WINAPI
SetWindowOrgEx (
_In_ HDC hdc,
_In_ int x,
_In_ int y,
_Out_opt_ LPPOINT lppt) ;
HGDIOBJ
WINAPI
SelectObject (
_In_ HDC hdc,
_In_ HGDIOBJ h) ;
BOOL
WINAPI
DeleteObject ( _In_ HGDIOBJ ho) ;
HGDIOBJ
WINAPI
GetStockObject ( _In_ int i) ;
HPEN
WINAPI
CreatePen (
_In_ int iStyle,
_In_ int cWidth,
_In_ COLORREF color) ;
HGDIOBJ
WINAPI
GetStockObject ( _In_ int i) ;
HBRUSH
WINAPI
CreateSolidBrush ( _In_ COLORREF color) ;
HBRUSH
WINAPI
CreateHatchBrush (
_In_ int iHatch,
_In_ COLORREF color) ;
BOOL
WINAPI
GetUpdateRect (
_In_ HWND hWnd,
_Out_opt_ LPRECT lpRect,
_In_ BOOL bErase) ;
相关数据结构
typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, * PRECT, NEAR * NPRECT, FAR * LPRECT;
typedef struct tagPAINTSTRUCT {
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;
BYTE rgbReserved[ 32 ] ;
} PAINTSTRUCT, * PPAINTSTRUCT, * NPPAINTSTRUCT, * LPPAINTSTRUCT;
typedef struct tagSIZE
{
LONG cx;
LONG cy;
} SIZE, * PSIZE, * LPSIZE;
typedef struct tagPOINT
{
LONG x;
LONG y;
} POINT, * PPOINT, NEAR * NPPOINT, FAR * LPPOINT;
属性对照说明
图形对象及其属性
图形对象 相关属性 位图 字节数、像素、颜色、缩放模式 字体 字体名称、宽度、高度、磅数、所属字符集 画刷 样式、颜色、起始点 画笔 样式、宽度、颜色 调色板 颜色、尺寸 区域 位置、尺寸
设备描述表属性及相关函数
属性 默认值 相关函数 背景色 WHITE GetBkColor(), SetBkColor() 背景模式 OPAQUE GetBkMode(), SetBkMode() 位图 NONE CreateBitMap(), CreateBitMapIndirect(), CreateCompatibleBitmap(), SelectObject() 画刷 WHITE_BRUSH CreateBrushIndirect(), CreateDIBPatternBrush(), CreateHatchBrush(), CreatePatternBrush(), CreateSolidBrush(), SelectObject() 画刷起始位置 (0, 0) GetBrushOrg(), SetBrushOrg(), UnrealizeObject() 剪截域 DISPLAY SURFACE ExcludeClipRect(), IntersectClipRect(), OffsetClipRgn(), SelectClipPath(), SelectObject(), SelectClipRgn() 颜色调色板 DEFAULT_PALETTE CreatePalette(), RealizePalette(), SelectPalette() 绘图方式 R2_COPYPEN GetROP2(), SetROP2() 字体 SYSTEM_FONT CreateFont(), CreateFontIndirect(), SelectObject() 字符间距 0 GetTextCharacterExtra(), SetTextCharacterExtra() 映射方式 MM_TEXT GetMapMode(), SetMapMode() 画笔 BLACK CreatePen(), CreatePenIndirect(), SelectObject() 多边形填充方式 ALTERNATE GetPolyFillMode(), SetPolyFillMode() 缩放模式 BLACKONWHITE SetStretchBltMode(), GetStretchBltMode() 文本颜色 BLACK GetTextColor(), SetTextColor() 视图范围 (1, 1) GetViewportExtEx(), SetViewportExtEx(), ScaleViewportExtEx() 视图远点 (0, 0) GetViewportOrgEx(), SetViewportOrgEx() 窗口范围 (1, 1) GetWindowExtEx(), SetWindowExtEx(), ScaleWindowExtEx() 窗口原点 (0, 0) GetWindowOrgEx(), OffsetWindowOrgEx(), SetWindowOrgEx()
Windows 映射模式
映射模式 将一个逻辑单位映射为 坐标系设定 MM_ANISOTROCPIC 由 SetWindowExtEx() 或 SetViewportExtEx() 函数确定 可选 MM_ISOTROPIC 由 SetWindowExtEx() 或 SetViewportExtEx() 函数确定 可选,但 X 轴和 Y 轴的单位比例为 1:1 MM_HIENGLISH 0.001 英寸 Y 向上,X 向右 MM_HIMETRIC 0.01 毫米 Y 向上,X 向右 MM_LOENGLISH 0.01 英寸 Y 向上,X 向右 MM_LOMETRIC 0.1 毫米 Y 向上,X 向右 MM_TEXT 一个像素(默认) Y 向上,X 向右 MM_TWIPS 1/1440 英寸 Y 向上,X 向右
画笔样式
样式 说明 PS_DASH 虚线 PS_DASHDOT 点划线 PS_DASHDOTDOT 双点划线 PS_DOT 点线 PS_INSIDEFRAME 边框线 PS_NULL 无 PS_SOLID 实线
画刷样式
样式 说明 BLACK_BRUSH 黑色画刷 DKGRAY_BRUSH 深灰色画刷 GRAY_BRUSH 灰色画刷 LTGRAY_BRUSH 浅灰色画刷 WHITE_BRUSH 白色画刷 HOLLOW_BRUSH 虚画刷 NULL_BRUSH 空画刷 DC_BRUSH 纯色画刷,可以通过函数 SetDCBrushColor 设定
画刷的阴影模式
样式 说明 HS_BDIAGONAL 45 度从左上角到右下角的阴影线 HS_FDIAGONAL 45 度从左下角到右上角的阴影线 HS_DIAGCROSS 45 度叉线 HS_CROSS 垂直相交的阴影线 HS_HORIZONTAL 水平阴影线 HS_VERTICAL 垂直阴影线