在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.