MFC之对话框美化(背景图片,按钮字体大小,字形,背景颜色)
2017-12-16 20:46
633 查看
由于最近老师让分组做一个C++项目作为结课作业,就学了一点美化对话框的知识。
来先看做的效果。一个游戏开始的界面,貌似有点丑。不过还可以看啦
新建对话框,添加控件就不多说了,请参考我前面的博客
http://blog.csdn.net/yao1373446012/article/details/78821674
下面主要说对对话框的美化
一、添加背景图片
1.资源视图->右击项目名称->添加->资源 就会出现下面的页面
2.选择Bitmap,点击导入,选择图片(.bmp格式)所在位置,注意更改下图箭头所指的位置,选中图片,打开,完成图片的加载工作。
3.然后在资源视图中就会生成Bitmap类。
4.添加函数。
选中对话框->右键->类向导->消息,重写OnCtlColor函数
二、按钮字体大小、字形设置
选中对话框->右键->类向导重写OnInitDialog函数
BOOL CBeginDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
CenterWindow();
SetMenu(NULL);
// TODO: 在此添加额外的初始化
//按钮字体大小,字形设置
CFont * f;
f = new CFont;
f->CreateFont(36, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_BOLD, // nWeight
TRUE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial")); // lpszFac
// :: SetTextColor(HDC hDC,RGB(255,255,0)); //设置字体颜色
GetDlgItem(IDC_BUTTON1)->SetFont(f);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
三、按钮背景颜色设置
选中对话框->右键->类向导重写OnDrawItem函数
void CBeginDialog::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
CString strText;
((CButton *)GetDlgItem(nIDCtl))->GetWindowText(strText);
SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);
//if (lpDrawItemStruct->itemState&ODS_SELECTED)
{
CBrush brush(RGB(255, 255, 80));
dc.FillRect(&(lpDrawItemStruct->rcItem), &brush);
DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
&lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);
}
dc.Detach();
CDialogEx::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
来先看做的效果。一个游戏开始的界面,貌似有点丑。不过还可以看啦
新建对话框,添加控件就不多说了,请参考我前面的博客
http://blog.csdn.net/yao1373446012/article/details/78821674
下面主要说对对话框的美化
一、添加背景图片
1.资源视图->右击项目名称->添加->资源 就会出现下面的页面
2.选择Bitmap,点击导入,选择图片(.bmp格式)所在位置,注意更改下图箭头所指的位置,选中图片,打开,完成图片的加载工作。
3.然后在资源视图中就会生成Bitmap类。
4.添加函数。
选中对话框->右键->类向导->消息,重写OnCtlColor函数
HBRUSH CBeginDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); static CBrush gBr; static bool isInited = false; if (!isInited) { CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); gBr.CreatePatternBrush(&bitmap); COLORREF clearColor = -1; bitmap.DeleteObject(); isInited = true; } if (pWnd == this) { pDC->SetBkMode(TRANSPARENT); return gBr; //主窗口背景使用这个背景刷 } else { pDC->SetBkMode(TRANSPARENT); return (HBRUSH)::GetStockObject(NULL_BRUSH); //其他控件使用透明背景 } // TODO: 在此更改 DC 的任何特性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; }这样就大功告成了。
二、按钮字体大小、字形设置
选中对话框->右键->类向导重写OnInitDialog函数
BOOL CBeginDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
CenterWindow();
SetMenu(NULL);
// TODO: 在此添加额外的初始化
//按钮字体大小,字形设置
CFont * f;
f = new CFont;
f->CreateFont(36, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_BOLD, // nWeight
TRUE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial")); // lpszFac
// :: SetTextColor(HDC hDC,RGB(255,255,0)); //设置字体颜色
GetDlgItem(IDC_BUTTON1)->SetFont(f);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
三、按钮背景颜色设置
选中对话框->右键->类向导重写OnDrawItem函数
void CBeginDialog::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
CString strText;
((CButton *)GetDlgItem(nIDCtl))->GetWindowText(strText);
SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);
//if (lpDrawItemStruct->itemState&ODS_SELECTED)
{
CBrush brush(RGB(255, 255, 80));
dc.FillRect(&(lpDrawItemStruct->rcItem), &brush);
DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
&lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);
}
dc.Detach();
CDialogEx::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
相关文章推荐
- MFC对话框美化(文本颜色、字体、背景颜色修改)
- MFC对话框修改背景颜色或添加背景图片、控件背景与字体颜色的修改
- MFC 基础知识:对话框背景添加图片和按钮Button添加图片
- MFC 对话框 背景图片 以及消除 字体重影 字体重叠
- 安卓利用按钮Button更改的字体大小、字体颜色、背景颜色代码
- MFC 改变static字体颜色、大小、背景颜色【自定义类】
- Qt设置背景色,按钮添加图片,实现三态,label添加图片,设置字体大小,颜色等基本操作
- UITableViewCell删除按钮的背景颜色,字体大小可以改变吗?
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- iOS开发之--如何修改TabBarItem的title的字体和颜色/BarButtonItem的title的字体大小和颜色/添加背景图片,并添加点击方法
- MFC 改变static字体颜色、大小、背景颜色【自定义类】
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- 改变MFC按钮的颜色和字体大小的处理
- MFC 基础知识:对话框背景添加图片和按钮Button添加图片
- Android 通过按钮Button更改全部的TextView、EditText、Button的字体大小、字体颜色、背景颜色
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- MFC 改变static字体颜色、大小、背景颜色【自定义类】
- 【MFC系列】MFC快速设置控件文本字体、大小、颜色、背景
- VS2010 MFC中改变static字体颜色、大小、背景颜色(自定义类),及手动关联变量的方法
- VC改变对话框按钮字体颜色和背景的解决方案(转)