读书人

视窗口背景颜色与字体颜色的有关问题

发布时间: 2012-02-21 16:26:23 作者: rapoo

视窗口背景颜色与字体颜色的问题
我是用mfc wizzd产生的单文档程序。现在需要在视窗口中显示特定的背景颜色已经文字的颜色。因为我是初学者,所以我在msdn上找了各setbkcolor函数在
CMyView::OnDraw(CDC* pDC) 中进行了调用,但我发现没有效果。

问题1:
在这我想不通在这调用此函数为什么不能改变背景的颜色,还请大家解说一二。

后来,我在msdn上找了另一种方法,如下:
在CMyView::OnDraw(CDC* pDC)

CBrush brush(RGB(0,160,255));
CRect rect;
GetClientRect(&rect);
pDC-> FillRect(&rect,&brush);

现在窗口的背景被改成了蓝色

然后我又调用SetTextColor函数来改变文字的颜色成粉色。而运行的结果与我想像中的却有点不同。

首先,字体的种类好像发生了变化,字体比原先更粗更黑了(难看极了)

问题2:
而不知为什么会这样?还请各位赐教

第2,字体确实变成了粉色,背景是蓝色,但以字体宽高为宽高的矩形范围内背景却是白色的!
即蓝色的背景有一块白色的矩形,而白色的矩形内的字体是粉色的,

问题3:
不知如何才能达到我预想的只有两种颜色:粉色和蓝色的结果。。。


还请大家多多指教,感激不尽


[解决办法]
SetBkColor设置的是文字背景颜色,也就是你说的“以字体宽高为宽高的矩形范围内背景”;整个窗口的背景是需要自己绘制的,也可以在注册窗口类时指定使用的背景画刷。自己绘制背景一般在响应WM_ERASEBKGND消息时绘制,或者重载OnEraseBkgnd()函数。
字体种类需要你自己创建字体,然后选进DC;如果没有选进字体,则使用的是默认的系统字体(不是界面字体),就是你看到的“更粗更黑”的难看极了的字体。创建字体CreateFont;然后用SelectObject选进DC;用完了再选出、销毁。可以使用CFont对象。
SetBkMode()设置绘制文字背景的方式:参数为TRANSPANRENT就是不绘制文字背景,也就是透明背景(只对文字而言)。

读书人网 >VC/MFC

热点推荐