MFC简单绘图(二)

在上篇中我们实现了画直线的功能,现在我们来实现画彩色线条和使用绘图画刷和透明画刷。

在上次建的工程中继续修改。

一、首先实现绘制彩色线条。

   首先需要创建一个特定的颜色的画笔,然后将此画笔选入设备描述表中, 可以利用MFC提供的类CPen来创建画笔对象,其的一个构造函数

CPen(int nPenStyle,int nWidth,COLORREF crColor);

其中nPenStyle 指定比的线型(实现、点线、虚线等),nWidth 指定比的宽度,crColor指定比的颜色,利用RGB这个宏可以构建这种类型的值。

  另外,构造一个GDI对象后,该对象并不会立即生效,必须选入设备描述表,它才会在以后的绘制操作中生效。利用SelectObject 函数可以实现吧GDI对象选入设备描述表中,并且该函数会返回指定先前被选对象的指针。着主要是为了再完成当前绘制操作后,还原设备描述表用的。

在void CDraw1View::OnLButtonUp(UINT nFlags, CPoint point) 的消息处理函数中修改代码:

值得注意的是:当画笔的宽度要小于等于1是,虚线线型才有效。

二、使用画刷绘图

 1、简单画刷

 

void FillRect(LPCRECT lpRect,CBrush* pBrush);

参数说明:lpRect指向一个RECT结构体或CRect对象指针

               pBrush指向用于填充矩形的画刷对象的指针。

 

 2、位图画刷

首先要给程序增加一个位图资源。

 

就创建了一个默认名称为IDB_BITMAP1的位图资源,并编辑此位图。创建了位图资源后,就可以利用代码来创建位图画刷了。

在void CDraw1View::OnLButtonUp(UINT nFlags, CPoint point) 消息处理函数中修改代码:

 

三、透明画刷

  我们首先来看看利用DCD的Rectangle 函数绘制一个矩形,代码如下:

运行结果如下,我们可以很明显的看到先前画的矩形会被后来画饿矩形所覆盖掉,那么我们要怎么来实现透明呢。

 

 

 

因为设备描述表中有一个默认的白色画刷,在绘图时,它会利用这个画刷来填充矩形的内部,就导致了上面我们看到的结果。

我们可以利用GetStockObject 这个函数来实现。但是利用GetStockObject 函数获取的是一个画刷句柄,而我们在进行绘制操作时需要的是一个画刷对象,这是我们可以利用CBrush 类提供的一个FromHandle 函数来实现从画刷句柄转化为画刷对象这个功能。

static DCD* PASCAL FromHandle(HDC hDC);

 

实现代码如下:

运行结果:

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值