【VC++】002使用画刷绘图

本文介绍了如何使用C++和MFC在Windows应用程序中绘制不同类型的画刷,包括简单的纯色画刷、位图填充画刷及透明画刷,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续走...

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);


效果即:

 

效果是从书上看来的,自己手动实践了一下,各位有更好的方法,请赐教...<初学者>



 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值