CStatic从文件夹加载位图

Posted on 2011-12-20 13:24  无忧consume  阅读(276)  评论(0编辑  收藏  举报

一、CStatic从文件夹加载位图

HBITMAP hbitmap; 
//获得指向静态控件的指针 
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP); 
//获得位图句柄 
HBITMAP Bitmap; 
//设置静态控件的样式,使其可以使用位图,并试位标显示使居中 
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE); 
//设置静态控件显示位图 
pStatic->SetBitmap(hBitmap);

二、设置对话框背景(小图可以漫延填充)

1、把你的图包含到程序的“Bitmap资源”里,提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以 

2定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码 
else 

//CDialog::OnPaint();//要禁止这个调用 
CPaintDC dc(this); 
CRect rect; 
GetClientRect(&rect); 
CDC dcMem; 
dcMem.CreateCompatibleDC(&dc); 
CBitmap bmpBackground; 
bmpBackground.LoadBitmap(IDB_BITMAP); 
//IDB_BITMAP是你自己的图对应的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);

//让所有的静态文本都透明好显示背景色
if(nCtlColor   ==   CTLCOLOR_DLG)   
{   
        //返回对话框的颜色   
   hbr=(HBRUSH)::CreateSolidBrush(RGB(146,161,202));     
}   
if(nCtlColor==CTLCOLOR_STATIC)   
{   
   //让静态文本框透明   
   pDC->SetBkMode(TRANSPARENT);   
   //pDC->SetTextColor(RGB(255,255,255));   //设置字体颜色白色   
   hbr=(HBRUSH)::GetStockObject(NULL_BRUSH);   
}   
if (nCtlColor==CTLCOLOR_EDIT)//设置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;
}


Copyright © 2024 无忧consume
Powered by .NET 8.0 on Kubernetes