您的位置:首页 > 其它

第26周-window程序设计(基础篇)-第5章(图形基础)-使用现有画笔Stock Pens

2016-09-26 18:26 477 查看
1、使用现有画笔Stock Pens:

/*使用现有画笔Stock Pens*/

HPEN hPen;
hPen = GetStockObject(WHITE_PEN); //获得现有画笔的句柄
SelectObject(hdc,hPen); //将画笔选进设备内容

将上述合并成:
SelectObject (hdc, GetStockObject (WHITE_PEN)) ;
使用BLACK_PEN
SelectObject (hdc, GetStockObject (BLACK_PEN)) ;

/*SelectObject的传回值是此呼叫前设备内容中的画笔句柄。如果启动一个新的设备内容并呼叫*/
hPen = SelectObject (hdc, GetStockobject (WHITE_PEN)) ;
/*则设备内容中的目前画笔将为WHITE_PEN,变量hPen将会是BLACK_PEN的句柄。以后通过呼叫下面函数,就能够将BLACK_PEN选进设备内容。*/
SelectObject (hdc, hPen) ;

2、画笔的建立选择和删除:

/*
画笔的建立、选择和删除
使用函数CreatePen或CreateIndirect建立一个[逻辑画笔];(两者都不需要设备内容句柄作为参数)
呼叫SelectObject将画笔选进设备内容;
删除用DeleteObject;
*/

/*
六大[GDI对象]:
是逻辑画笔、画刷、位图、区域、字体和调色盘,除调色盘外,都通过SelectObject选进设备内容。
三原则:
1、最后要删除自己建立的所有GDI对象。
2、当GDI对象正在一个有效的设备内容中使用时,不要删除它。
3、不要删除现有对象。
*/

/*CreatePen函数*/
hPen = CreatPen(iPenStyle,iWidth,crcolor);
其中
iPenStyle参数确定画笔是实线、点线还是虚线;

WINGDI.H的每种画笔样式标识符
PS_SOLID 直线
PS_DASH 虚线
PS_DOT 点线组合
PS_DASHDOT 虚线和点的组合
PS_DASHDOTDOT 虚线点点组合
PS_NULL 无
PS_INSIDEFRAME 直线或内框 ? //唯一一种可以使用混色的画笔样式,且需宽度大于1时才这样。整条边界框线都画在边界框之内。

/*使用CreatePenIndirect需定义一个LOGPEN型态结构*/
LOGPEN logpen;
三个成员:lopnStype(UINT)、lopnWidth(POINT结构)、lopnColor(COLORREF)

/*将结构地址传给CreatePenIndirect,即可建立画笔*/
hPen = CreatePenIndirect(&logpen);

/*建立、选择和删除画笔的方法*/
static HPEN hPen1,hPen2,hPen3;
hPen1 = CreatePen(PS_SOLID,1,0);
hPen2 = CreatePen(PS_SOLID,3,RGB(255,0,0));
hPen3 = CreatePen(PS_DOT,0,0);

将画线函数选进设备内容:
SelectObject(hdc,hPen2);
SelectObject(hdc,hPen1);

删除三种画笔:
DeleteObject (hPen1) ;
DeleteObject (hPen2) ;
DeleteObject (hPen3) ;

随时建立画笔,并将CreatePen和SelectObject呼叫组合
SelectObject(hdc,CreatePen(PS_DASH,0,RGB(255,0,0)));

以通过呼叫SelectObject将BLACK_PEN选进设备内容,并删除从SelectObject传回的值:
DeleteObject(SelectObject(hdc,GetStockObject(BLACK_PEN)));

新建立的画笔选进设备内容时,保存SelectObject传回的画笔句柄:
hPen = SelectObject(hdc,CreatePen(PS_DASH,0,RGB(255,0,0)));

将hPen选进设备内容,并删除所建立的画笔
DeleteObject(SelectObject(hdc,hPen));

如果有一个画笔的句柄,就可以通过呼叫GetObject取得LOGPEN结构各个成员的值:
GetObject(hPen,sizeof(LOGPEN),LPVOID)&logpen);

目前选进设备内容的画笔句柄
hPen = GetCurrentObject(hdc,OBJ_PEN);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐