俄罗斯方块(五)画底板

至此为止,我们已经把自己的Panel整合入Windows的应用程序中了。接下来,我们对Panel进行底色的涂刷。

前两节说过,因为Panel继承自CWnd,所以它现在可以接受windows的显示消息了。

 

在类视图窗口中选中Panel类,在属性窗口中点选消息按钮,可以看到所有的Windows消息。找到WM_PAINT消息,添加对应的处理函数 OnPaint。

 

然后就要用到MFC的GDI的一些类来画图了。

最重要的是C***DC(Device Context)类。其实可以把DC想象成是画板,所有的画图操作都要通过画板来完成。

DC类提供了很多画图方法,drawIcon, fillRect等等。

还有一些其他对象,CBitmap, CBrush, CFont,CPen等,可以用来画出不同的字体,或颜色。

 

我们简单给Panel刷个灰的底色:

void Panel::OnPaint()
{
	CPaintDC dc(this); // device context for painting	

	CRect rect;
	this->GetClientRect(rect);
	CBrush brushbg( RGB(125,125,125) );
	dc.FillRect(rect,& brushbg);
 

这里面还有一个GetClientRect的方法,这是CWnd的一个方法。可以得到当前窗口对象的内部大小

我们Panel的构建实在Dlg.h文件里面有一句  Panel m_Panel;来实现的。

创建的时候并没有设定窗体大小。

因为Panel是跟资源中IDC_PANEL捆绑在一起的。所以创建完成后,Dlg会自动按照IDC_PANEL的大小设定Panel.

这样,我们只需要通过GetClientRect的方法,就可以得到Panel实际的的大小尺寸了。

Rect其实就是Rectangle的缩写,里面保存着上下左右位置信息。

 

好了,运行一下代码,可以看到原来放Static Text的地方成了灰色的一块。OK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值