麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(21)关于VC++中的CPEN类

在之前的文章VC++开发GIS系统(20)设置点边框颜色中,我使用到了Cpen这个类,这个类在以后也会经常遇到,所以这里做一个简要的介绍,在后来教程中也会继续使用这个类完成绘图工作。

构造函数

CPen( 
int nPenStyle, 
int nWidth, 
COLORREF crColor  
); 
CPen( 
int nPenStyle, 
int nWidth, 
const LOGBRUSH* pLogBrush, 
int nStyleCount = 0, 
const DWORD* lpStyle = NULL  
);

构造说明

在本教程中没有使用到第2个构造函数,如果对第2个构造函数感兴趣可以自行搜索相关说明。下面对第1个构造函数做一个说明。

  1. 参数 nPenStyle

PS_SOLID:实线
PS_DOT:点线
PS_DASH:划线
PS_DASHDOT:点划线
PS_DASHDOTDOT:一划两点的点划线
PS_NULL:透明线
PS_INSIDEFRAME:边框内沿线

其中边框内沿线是指整个边框线的实体都紧贴边框内沿,而非PS_INSIDEFRAME的线在边框内侧和外侧的宽度都一样,比如画一个圆,直径为5像素,画圆的线的风格是非内沿的2像素宽的线,则边沿线内外两侧各占1像素宽的边框线,因此总的外径为12像素,但如果是内沿的风格,则变沿线外侧无边框线的像素,而内侧有2像素宽度的边框线,因此外径仍然是10像素;

  1. 参数 nWidth

宽度由逻辑单位给出,逻辑单位取决于当前的映射模式,其中PS_SOLID、PS_NULL、PS_INSIDEFRAME可以指定任意逻辑宽度,但其余(PS_DASH、PS_DOT、PS_DASHDOT、PS_DASHDOTDOT)必须指定1单位宽,如果指定其它任何值都会在后台自动修正为1逻辑宽度。

  1. 参数 COLORREF crColor

由RGB宏定义,三个分量分别为红、绿、蓝;

使用方法

既然讲了构造函数,下面介绍一下Cpen的使用方法,参考代码如VC++开发GIS系统(20)设置点边框颜色

CClientDC dc(this);
//画方形的点
CPen pen(0, 1, RGB(0, 255, 0));//创建画笔,实现 宽度1 颜色:Green
CPen *oldPen = dc.SelectObject(&pen);//保存老画笔,并选中当前画笔

dc.Rectangle(CRect(CPoint(point.x - 10, point.y - 10), CPoint(point.x + 10, point.y + 10)));//用新画笔画图

dc.SelectObject(oldPen);//恢复老画笔
pen.DeleteObject();//删除画笔

基本的过程如下:

新建画笔--选中新建的画笔,同时保存老画笔--画图--恢复老画笔--删除新建的画笔。

参考文献

CPen画笔类、CBrush画刷类、背景颜色和背景模式

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)