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画刷类、背景颜色和背景模式

ArcGIS安装完成arcmap无法启动:Provide your license server administrator with the following... VC++开发GIS系统(22)设置点的边框线型

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论