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

本文详细介绍了MFC中CPen和CBrush的使用,包括画笔风格、宽度、颜色的设定,以及画刷的填充方式。通过创建、修改和选中画笔、画刷,实现不同图形的绘制效果。同时,文章讲解了如何设置画刷原点,以确保阴影线填充矩形时从左上角开始。
摘要由CSDN通过智能技术生成

1. 画笔的风格:

    1) 所有的画线函数都是使用CPen类指定的画笔绘制的,默认都是1像素宽、黑色的实线;

    2) 要使定义的画笔生效(即可以画线)必须先创建CPen的画笔对象,然后将其选入设备环境dc中方可生效,但如果什么都不设定也可以直接用dc画线,是因为dc初始化时有一个默认的画笔,就是上述的1像素宽、黑色的实线;

    3) 画笔的风格由三个特性决定,即样式、宽度和颜色:

         i. 样式(int nPenStyle):主要有实线、划线、点线、点划线、透明这几种主要风格,该项特性由宏PS_指定,即Pen Style的缩写,主要由这几个常用的

PS_SOLID:实线

PS_DOT:点线

PS_DASH:划线

PS_DASHDOT:点划线

PS_DASHDOTDOT:一划两点的点划线

PS_NULL:透明线

PS_INSIDEFRAME:边框内沿线

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

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

!注意:任意样式如果指定的宽度为0,都会被默认修正成1;

         iii. 颜色(COLORREF crColor):由RGB宏定义,三个分量分别为红、绿、蓝;


2. 创建、修改、选中画笔:

    1) 可以使用CPen的构造函数:

         i. 无参构造函数:CPen(),和dc初始化时默认的画笔相同,也是实线、1像素宽、黑色;

         ii. 有参构造函数:CPen(int nPenStyle, int nWidth, COLORREF crColor);

    2) 修改画笔:如果想修改画笔的风格࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值