CBitmap bitmap;
bitmap.LoadBitmap (IDB_BITMAP1);
CBrush brush(&bitmap);
CRect buttonplay;
GetDlgItem(IDC_PLAY)->GetWindowRect(&buttonplay);
CClientDC dc(this);
dc.FillRect (&buttonplay,&brush);
// CString str="RUN";
// SetDlgItemText(IDC_PLAY,str);
我建立了一个对话框,所有的button都在对话框上,上面的代码就是想改变一下按钮的颜色,请问这些代码要加在对话框类的什么地方呢,还有就是对话框与按钮之间到底是什么关系,是先画对话框,再画按钮吧?IDC_PLAY是按钮PLAY的ID.另外,FillRect函数好像不能达到预期目地,因为它虽然在对话框上画出来了一个矩形框,不过位置不对,有点乱画的感觉,但它的位置应该由buttonplay确定了的啊?
bitmap.LoadBitmap (IDB_BITMAP1);
CBrush brush(&bitmap);
CRect buttonplay;
GetDlgItem(IDC_PLAY)->GetWindowRect(&buttonplay);
CClientDC dc(this);
dc.FillRect (&buttonplay,&brush);
// CString str="RUN";
// SetDlgItemText(IDC_PLAY,str);
我建立了一个对话框,所有的button都在对话框上,上面的代码就是想改变一下按钮的颜色,请问这些代码要加在对话框类的什么地方呢,还有就是对话框与按钮之间到底是什么关系,是先画对话框,再画按钮吧?IDC_PLAY是按钮PLAY的ID.另外,FillRect函数好像不能达到预期目地,因为它虽然在对话框上画出来了一个矩形框,不过位置不对,有点乱画的感觉,但它的位置应该由buttonplay确定了的啊?
最方便的就是去vckbase网站下载颜色按钮的类,很好用的,呵呵
然后将此按钮派生与CButton类在子类的DrawItem(LPDRAWITEMSTRUCT lpDIS)函数中设置,此函数为虚函数。网上有一个CButtonST类,专为实际的开发中做的Button类,功能十分强大。
{
// TODO: Add your code to draw the specified item
CRect rc;
GetClientRect(&rc);
CDC dc;
using namespace Gdiplus;//应用 GDI+前必须的设置
Graphics graph(GetDC()->m_hDC); if(m_ResoucePath.IsEmpty())
{
Image image(L"E:\\图片相关\\我的作品\\GDI+BUTTON 水晶1.png");
graph.DrawImage(&image,0,0,rc.right-rc.left,rc.bottom-rc.top);
}
}
不一定哦! 看看我的代码:HBRUSH CXXXDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); pDC->SelectObject(&dFon); if (pWnd->GetDlgCtrlID() == IDOK)
{
if(COLORFLAG==TRUE)
{
pDC->SetTextColor(RGB(255,255,255));
pDC->SetBkColor(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
pDC->TextOut(54,9,"警告"); return m_hRedBrush;
}else{ pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(255,0,255));
pDC->SetBkMode(TRANSPARENT);
pDC->TextOut(54,9,"警告");
return m_hWitBrush;
}
} return hbr;
}我就是在Dialog的OnCtlColor来改变按钮的颜色的。
IDOK就是按钮的ID喽。
HBITMAP m_hbmp;
m_hbmp=::LoadBitmap (HINSTANCE(GetModuleHandle(NULL)),MAKEINTRESOURCE(IDB_BITMAP1));
m_play.SetBitmap (m_hbmp);
m_play是关联到play按钮的一个变量,但不知道为什么没有界面,但产生了exe文件,只要去掉关联到按钮的变量之后就一切正常.
也可能是你绘制的速度太慢。