继续走...
1.简单画刷
//创建一个红色画刷
CBrush brush(RGB(255,0,0));
//创建并获得设备描述表
CClientDC dc(this);
//形成矩形区域
dc.FillRect(CRect(m_ptOrigin,point),&brush);
同样,画刷也是通过鼠标的点击与放开从而获得矩形的对角两点,进行绘画矩形区域;
在msdn中,CRect有以下的函数使用,我们使用的是最后一个,获得POINT类型的两个点,从而绘画:
CRect::CRect
CRect( );
CRect( int l, intt, int r, int b );
CRect( const RECT& srcRect);
CRect( LPCRECT lpSrcRect);
CRect( POINT point, SIZEsize );
CRect( POINT topLeft, POINTbottomRight );
(大家可查询MSDN,很好的材料)
执行如下:
2.位图画刷
当我们需要一些具有特色的区域的时候,可以通过自己建立位图来制作自己类型的画刷;
通过【insert】插入->【resource】资源会弹出个窗口,选择Bitmap,新建之后,我们就可以创作一个自己喜欢的位图啦,o(∩_∩)o
再通过以下:
//位图画刷
CBitmap bitmap;
//加载位图
bitmap.LoadBitmap(IDB_BITMAP1);
//创建画刷
CBrush brush(&bitmap);
//创建并获得设备描述表
CClientDC dc(this);
//矩形区域
dc.FillRect(CRect(m_ptOrigin,point),&brush);
即可画出自己风格的图:
3.透明画刷
按照我们普通的绘画,后面的实质上是将之前的一点一点的覆盖,如:
//创建并获得设备描述表
CClientDC dc(this);
//矩形区域
dc.Rectangle(CRect(m_ptOrigin,point));
结果是:
由图可知,图是不断被覆盖的,可是有时候当我们想不被覆盖怎么办呢?
因为系统默认的是白色画刷,矩形区域的内容是白色的,故而覆盖。所以我们可以画一个透明的画刷,从而实现。
如图:
//创建并获得设备描述表
CClientDC dc(this);
//创建空画刷
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
//将画刷选入设备描述表
CBrush *pOldBrush=dc.SelectObject(pBrush);
//矩形区域
dc.Rectangle(CRect(m_ptOrigin,point));
//恢复之前的画刷
dc.SelectObject(pOldBrush);
效果即:
效果是从书上看来的,自己手动实践了一下,各位有更好的方法,请赐教...<初学者>