在VC下界面的美化比较麻烦,但方法也很多,由于投入时间不能太多,所以只能找些简单的美化方法,下面记录下自己美化程序时用到的一些方法,由于程序比较简单,高手可以略过.
首先,我用的是MFC对话框程序,按钮肯定是美化的,网上比较出名的有CButtonST,功能比较强大,但具体的使用方法,这里就不复制粘贴了,可以去网上找。
如果不做的非常好看,用MFC自带的CBitmapButton类就可以了,二行至三行就可以搞定,适合非常懒的,当然按钮的Owner draw要变成true:
m_bttm.LoadBitmaps(IDB_1,IDB_2,IDB_3,IDB_4); m_bttm.SubClassDlgItem(控件号,父窗口类); //感觉不加这句运行的也很好呀。(不知道有啥用,求问) m_bttm.SizeToContent();
这样的话,一个按钮的贴图就完成了,是不是挺简单的(因为咱们要求低*_*),在LoadBitmaps函数中就可以指定鼠标按下、抬起、离开、禁用等状态的图片显示了。
第三句是控件适应图片大小。不解释了,下而来张图片吧。
由于按钮的背景色,与对话框的背景色不一样,所以看起来,特别的别扭。
下面来改变对话框的颜色,或者给对话框上图片的代码。
改变颜色:
网上有很多办法,这只是其中一个比较简单的:
1、在OnPaint里修改
2、在OnCtlColor里修改
等,应该还有的
在onPaint里添加:
CRect rect; CPaint dc(this); GetClientRect(&rect); dc.FillSoliRect(rect,RGB(255,255,0));
这是改变背景颜色。
下面是贴背景图:
this->Invalidate(); CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateComPatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(BMP图片资源号); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); HBITMAP* pOldbmp = (HBITMAP*)dcMem.SelectObject(bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
OK,图片贴完了。
下面说***意,要想把界面做的好看,还是需要美工的,不是随便在网上找几个图贴上就OK了,当然大牛会自己画的除外,图片上了后,你需要按钮的颜色与对话框背景的颜色一致,不然,就像我上面那张图,一下看出倪端了。把上面背景色修改后,效果如下:
这时候位图按钮的图片看起来就自然多了,但由于这个圆型按钮旁边的颜色与对话框背景的颜色还不是很相近,所以还是可以看得出来白色的部分,这时候就需要美工来修改了,如果自己会PS的话,也可以修改下,好了,很简单的说了下原理,设计部分还是交给大家去构思。
其它控件,也可以通过CTLCOLOR消息去过滤,然后进行改变,支持的各类有:
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滑动条
CTLCOLOR_STATIC 静态文本框、矩形等。
注意:一些重载函数也会引起背景颜色与图片的不正常显示,如WM_DRAWITEM.