CreatePenIndirect函数
结构LOGPEN存储了逻辑画笔的三个参数,画笔样式、宽度、颜色。
typedef struct tagLOGPEN{
UINT lopnStyle; //样式
POINT lopnWidth; //宽度
COLORREF lopnColor; //颜色
}LOGPEN,*PLOGPEN;
UINT lopnStyle; //样式
POINT lopnWidth; //宽度
COLORREF lopnColor; //颜色
}LOGPEN,*PLOGPEN;
LOGPEN logpen;
HPEN p;
HGDIOBJ hOld;
HDC hdc = ::GetDC(this->m_hWnd);
logpen.lopnWidth.x = 1;
logpen.lopnColor = RGB(255,0,0);
logpen.lopnStyle = PS_SOLID;
p = CreatePenIndirect(&logpen);
hOld=SelectObject(hdc,p);
MoveToEx(hdc,0,10,NULL);
LineTo(hdc,50,10);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
HPEN p;
HGDIOBJ hOld;
HDC hdc = ::GetDC(this->m_hWnd);
logpen.lopnWidth.x = 1;
logpen.lopnColor = RGB(255,0,0);
logpen.lopnStyle = PS_SOLID;
p = CreatePenIndirect(&logpen);
hOld=SelectObject(hdc,p);
MoveToEx(hdc,0,10,NULL);
LineTo(hdc,50,10);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
ExtCreatePen函数
上面CreatePen和CreatePenIndirect(CreatePenIndirect也是调用的CreatePen函数)创建的画笔,当宽度大于一个象素时,画笔不能画真实形式的直线,例如虚线和点划线。绘制的直线画端是圆角的,这时这两个函数将不能满足需要了。这时就可用到ExtCreatePen函数。ExtCreaetPen可以创建几何画和装饰性画笔。
HPEN ExtCreatePen(DWORD dwPenStylek,
DWORD dwWidth,
CONST LOGBRUSH *lplb,
DWORD dwStyleCont,
CONST DWORD *lpStyle);
DWORD dwWidth,
CONST LOGBRUSH *lplb,
DWORD dwStyleCont,
CONST DWORD *lpStyle);
今天太累了,明天继续练