用ExtCreatePen创建装饰性画笔
dwPenStyle:为画笔类型和型式(类型包括PS_COSMETIC和PS_GEOMETRIC,PS_COSMETIC为装饰画笔,PS_GEOMETRIC为几何画笔,型式包括前面说的画笔的样式PS_SOLID....,在2000/nt以上还包括PS_USERSTYLE、PS_ALTERNATE)。
dwWidth:装饰性画笔只能画单个象素宽的线,因此dwWidth参数只能为1;
lplb:画笔的属性;
dwStyleCont:是自定义样式数组的个数。
lpStyle:自定义样式数组
LOGBRUSH lb;
HDC hdc = ::GetDC(this->m_hWnd);
HGDIOBJ hOld;
lb.lbStyle = BS_SOLID;
lb.lbColor = RGB(255,0,0);
lb.lbHatch = 0;
HPEN p = ExtCreatePen(PS_COSMETIC | PS_SOLID,1, &lb, 0,NULL);
hOld = SelectObject(hdc,p);
MoveToEx(hdc,0,20,NULL);
LineTo(hdc,100,20);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
HDC hdc = ::GetDC(this->m_hWnd);
HGDIOBJ hOld;
lb.lbStyle = BS_SOLID;
lb.lbColor = RGB(255,0,0);
lb.lbHatch = 0;
HPEN p = ExtCreatePen(PS_COSMETIC | PS_SOLID,1, &lb, 0,NULL);
hOld = SelectObject(hdc,p);
MoveToEx(hdc,0,20,NULL);
LineTo(hdc,100,20);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
下面使用PS_USERSTYLE来创建自定义的装饰性画笔,lpSyle数组中的第一个元素象素长度,第二个元素为间距长度,第三个元素为象素长度......,里面元素的单位为三个象素,例如{4,3,2,1}则绘出的线为12个象素的线,9象素的间距,6象素的线,3象素的间距。
LOGBRUSH lb;
HDC hdc = ::GetDC(this->m_hWnd);
HGDIOBJ hOld;
DWORD cy[4] = {4,3,2,1};
lb.lbStyle = BS_SOLID;
lb.lbColor = RGB(255,0,0);
lb.lbHatch = 0;
HPEN p = ExtCreatePen(PS_COSMETIC | PS_USERSTYLE,1, &lb, 4, cy);
hOld = SelectObject(hdc,p);
MoveToEx(hdc,0,20,NULL);
LineTo(hdc,100,20);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
HDC hdc = ::GetDC(this->m_hWnd);
HGDIOBJ hOld;
DWORD cy[4] = {4,3,2,1};
lb.lbStyle = BS_SOLID;
lb.lbColor = RGB(255,0,0);
lb.lbHatch = 0;
HPEN p = ExtCreatePen(PS_COSMETIC | PS_USERSTYLE,1, &lb, 4, cy);
hOld = SelectObject(hdc,p);
MoveToEx(hdc,0,20,NULL);
LineTo(hdc,100,20);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
使用ExtCreatePen建立几何画笔
LOGBRUSH lb;
HDC hdc = ::GetDC(this->m_hWnd);
HGDIOBJ hOld;
DWORD cy[4] = {4,3,2,1};
lb.lbStyle = BS_SOLID;
lb.lbColor = RGB(255,0,0);
lb.lbHatch = 0;
//创建一个平面端点几何画笔(PS_ENDCAP_FLAT平面端点,PS_ENDCAP_ROUND圆角端点)
HPEN p = ExtCreatePen(PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_FLAT,16, &lb, 0, NULL);
hOld = SelectObject(hdc,p);
MoveToEx(hdc,0,20,NULL);
LineTo(hdc,100,20);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
HDC hdc = ::GetDC(this->m_hWnd);
HGDIOBJ hOld;
DWORD cy[4] = {4,3,2,1};
lb.lbStyle = BS_SOLID;
lb.lbColor = RGB(255,0,0);
lb.lbHatch = 0;
//创建一个平面端点几何画笔(PS_ENDCAP_FLAT平面端点,PS_ENDCAP_ROUND圆角端点)
HPEN p = ExtCreatePen(PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_FLAT,16, &lb, 0, NULL);
hOld = SelectObject(hdc,p);
MoveToEx(hdc,0,20,NULL);
LineTo(hdc,100,20);
SelectObject(hdc,hOld);
DeleteObject(p);
::ReleaseDC(this->m_hWnd,hdc);
浙公网安备 33010602011771号