VC下的界面基本美化

    在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函數中就可以指定鼠標按下、擡起、離開、禁用等狀態的圖片顯示了。

第三句是控件適應圖片大小。不解釋了,下而來張圖片吧。

wKioL1So_qrQ0rrrAADgzpP5Wyw853.jpg

由於按鈕的背景色,與對話框的背景色不一樣,所以看起來,特別的彆扭。


下面來改變對話框的顏色,或者給對話框上圖片的代碼。

改變顏色:

網上有很多辦法,這只是其中一個比較簡單的:

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了,當然大牛會自己畫的除外,圖片上了後,你需要按鈕的顏色與對話框背景的顏色一致,不然,就像我上面那張圖,一下看出倪端了。把上面背景色修改後,效果如下:

wKioL1SpSdbBBJQPAABlcVHsGm0279.jpg

這時候位圖按鈕的圖片看起來就自然多了,但由於這個圓型按鈕旁邊的顏色與對話框背景的顏色還不是很相近,所以還是可以看得出來白色的部分,這時候就需要美工來修改了,如果自己會PS的話,也可以修改下,好了,很簡單的說了下原理,設計部分還是交給大家去構思。

其它控件,也可以通過CTLCOLOR消息去過濾,然後進行改變,支持的各類有:

CTLCOLOR_DLG   對話框 
CTLCOLOR_EDIT   編輯框 
CTLCOLOR_LISTBOX   列表框   
CTLCOLOR_MSGBOX   消息框 
CTLCOLOR_SCROLLBAR   滑動條 
CTLCOLOR_STATIC   靜態文本框、矩形等。

注意:一些重載函數也會引起背景顏色與圖片的不正常顯示,如WM_DRAWITEM.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章