第26周-window程序设计(基础篇)-第5章(图形基础)-使用现有画笔Stock Pens
2016-09-26 18:26
477 查看
1、使用现有画笔Stock Pens:
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);
/*使用现有画笔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);
相关文章推荐
- 第26周-window程序设计(基础篇)-第5章(图形基础)-SINEWAVE.C正弦波
- 第26周-window程序设计(基础篇)-第5章(图形基础)-取得设备内容的多方法
- 第26周-window程序设计(基础篇)-第5章(图形基础)-关于颜色
- 第26周-window程序设计(基础篇)-第5章(图形基础)-贝塞尔曲线BEZIER.C
- 第26周-window程序设计(基础篇)-第5章(图形基础)-点和线
- 第26周-window程序设计(基础篇)-第5章(图形基础)-DEVCAPS1.C
- 第26周-window程序设计(基础篇)-第5章(图形基础)-边界框及LINDEMO.C
- 第26周-window程序设计(基础篇)-第5章(图形基础)-填入空隙和填入区域
- 第26周-window程序设计(基础篇)-第5章(图形基础)-Polygon函数和多边形填入方式
- 第25周-window程序设计(基础篇)-第4章-GDI图形设备接口
- 【JAVA语言程序设计基础篇】--图形--使用FontMetrics类居中显示字符串
- 【JAVA语言程序设计基础篇】--图形-- 使用抽象方法绘制函数图形
- 【JAVA语言程序设计基础篇】--图形用户界面基础--使用面板作为子容器
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-涉及的数据定义
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-使用UDA操纵SQL语句
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-ORM访问器及其配置
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-UDA中的委托与应用
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-UDA应用中使用IOC解偶数据连接环境
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-ORM访问器及其配置