matlabgui静态⽂本框透明化,让所有的静态⽂本都透明好显⽰
背景⾊
⼀、CStatic从⽂件夹加载位图
HBITMAP hbitmap;
//获得指向静态控件的指针
textbox控件边框设置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;
}
四、CStatic背景透明后⽂本覆盖的问题

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。