一、CStatic從文件夾加載位圖
HBITMAP hbitmap;
//獲得指向靜態(tài)控件的指針
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP);
//獲得位圖句柄
HBITMAP Bitmap;
//設(shè)置靜態(tài)控件的樣式,使其可以使用位圖,并試位標(biāo)顯示使居中
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
//設(shè)置靜態(tài)控件顯示位圖
pStatic->SetBitmap(hBitmap);
二、設(shè)置對(duì)話框背景(小圖可以漫延填充)
1、把你的圖包含到程序的“Bitmap資源”里,提示說(shuō)該資源使用了大于256色的調(diào)色板,在VC里無(wú)法編輯等等,點(diǎn)確定就可以
2、定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代碼
else
{
//CDialog::OnPaint();//要禁止這個(gè)調(diào)用
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP);
//IDB_BITMAP是你自己的圖對(duì)應(yīng)的ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
三、CStatic控件透明
可以這樣作的:
HBRUSH CShutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
//讓所有的靜態(tài)文本都透明好顯示背景色
if(nCtlColor == CTLCOLOR_DLG)
{
//返回對(duì)話框的顏色
hbr=(HBRUSH)::CreateSolidBrush(RGB(146,161,202));
}
if(nCtlColor==CTLCOLOR_STATIC)
{
//讓靜態(tài)文本框透明
pDC->SetBkMode(TRANSPARENT);
//pDC->SetTextColor(RGB(255,255,255)); //設(shè)置字體顏色白色
hbr=(HBRUSH)::GetStockObject(NULL_BRUSH);
}
if (nCtlColor==CTLCOLOR_EDIT)//設(shè)置EDIT控件的顏色
{
HBRUSH hbr1 = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
hbr1=(HBRUSH)::CreateSolidBrush(RGB(0,0,0)); //背景黑色
pDC->SetTextColor(RGB(255,255,255)); //文字白色
pDC->SetBkMode(TRANSPARENT);
return hbr1;
}
return hbr;
}
四、CStatic背景透明后文本覆蓋的問(wèn)題
http://blog.vckbase.com/hatemath/archive/2005/08/04/10485.aspx