目录

使用画刷绘图

简单画刷

FillRect函数

位图画刷

透明画刷

接上:VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor

接下:VC++ 绘制连续线条 绘制扇形效果的线条

使用画刷绘图

MFC提供了一个CBrush类,可以用来创建画刷对象。画刷通常用来填充一块区域。

简单画刷

如下所示代码实现的功能是利用一个红色画刷填充鼠标拖曳过程中形成的一块矩形区域。

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

//创建一个红色画刷

CBrush brush(RGB(255, 0, 0));

//创建并获得设备描述表

CClientDC dc(this);

//利用红色画刷填充鼠标拖拽过程中形成的矩形区域

dc.FillRect(CRect(m_ptOrigin, point), &brush);

CView::OnLButtonUp(nFlags, point);

}

在上例代码中,首先创建一个红色画刷;接着创建设备描述表对象;然后调用设备描述表对象的成员函数 FillRect,利用指定的画刷填充一块指定的矩形区域,而鼠标拖动过程中的起点和终点就决定了需要填充的矩形区域的大小,因此,在代码中通过CRect类利用鼠标拖动的起点和终点构造了这块矩形区域。CRect类提供了多个构造函数,本例使用的是下面这个构造函数,即通过指定矩形区域的左上角和右下角这两个点来构造一块矩形区域。

CRect(

POINT topLeft,

POINT bottomRight

) throw( );

在上面代码中使用CDC类的成员函数FillRect,该函数的功能是用指定的画刷填充一个矩形。该函数将填充全部的矩形,包括左边和上部边界,但不填充右边和底部边界。FillRect函数的声明如下所示。

FillRect函数

void FillRect(

LPCRECT lpRect,

CBrush* pBrush

);

该函数有两个参数,各自的含义如下所述。

■ lpRect指向一个RECT结构体或CRect对象的指针,该结构体或对象中包含了要填充的矩形的逻辑坐标。

■ pBrush指向用于填充矩形的画刷对象的指针。编译并运行Draw程序,并在程序窗口中任意拖动鼠标,将会得到多个红色区域。

提示: 这里我们只是用指定的画刷填充一块区域,因此,并不需要把画刷选入设备描述表中。在设备描述表中存在一个默认的白色画刷。

位图画刷

CBrush类有下面这样一个构造函数。

explicit CBrush(

CBitmap* pBitmap

);

该构造函数要求一个CBitmap类型的指针&


包含润的成语更多
Java 对象的生命周期