获取画笔:
hPen=GetStockObject(WHITE_PEN);
hPen=CreatePen(iPenStyle, iWidth, crColor);
hPen=CreatePenIndirct(&logpen);
虚线画笔的中空隙颜色:
SetBkColor(hdc,crColor);
SetBkMode(hdc,iMode);
画笔空隙背景有两种Mode,OPAQUE(默认)和TRANSPARENT。OPAQUE即设置SetBkColor的crColor,TRANSPARENT……
绘图模式:
SetROP2(hdc, iDrawMode);
有些麻烦,就是背景色与画笔色的位运算方法
获取画刷:
hBrush=GetStockObject(GRAY_BRUSH);
hBrush=CreateSolidBrush(crColor);
hBrush=CreateHatchBrush(iHatchStyle, crColor);
crColor是阴影线条色,阴影间隙色由间隙背景模式和背景色决定。Mode同画笔
CreatePatternBrush和CreateDIBPatternBrushPt可创建位图画刷
hBrush=CreateBrushIndirect(&logbrush);
此画刷可用以上四种画刷,参考结构体LOGBRUSH
包围区域填充方式:
SetPolyFillMode(hdc, iMode);
iMode有ALTERNATE和WINDING两种。ALTERNATE:从包围区域向无穷远引射线,只有当放射线穿过的线段数为奇数时才填充该包围区。WINDING:包围区域都填充;例外,如果射线穿过的线段向一个方向的数量和另一个方向的数量相同则不填充。
获取当前Pen或Brush句柄、逻辑值(LOGPEN和LOGBRUSH):
hPen=GetCurrentObject(hdc, OBJ_PEN);
hBrush=GetCurrentObject(hdc, OBJ_BRUSH);
GetObject(hPen, sizeof(LOGPEN), (LPVOID) &logpen);
GetObject(hBrush, sizeof(LOGBRUSH), (LPVOID) &logbrush);
删除句柄:
Create的句柄都要删除,但不能在DC还在使用该句柄的时候删除。
DeleteObject(hPen); or DeleteObject(hBrush);
如果没有保存句柄,可利用SelectObject(hdc, hPen/hBrush)返回上一个使用的句柄:
DeleteObject(Select(hdc, hPen/hBrush));