VC 控件背景透明、文字背景透明

本文介绍了如何在Visual C++中实现位图背景上的文字透明显示,以及静态文本框的背景透明。通过OnPaint()函数进行位图绘制,并设置DC的背景模式为TRANSPARENT,实现背景透明。同时,使用OnCtlColor()函数处理静态文本框的控件颜色,设置透明背景和自定义文字颜色。
Visual C++  开发实战宝典
 
功能:位图上显示文字,背景透明。
void CP400Dlg::OnPaint() 
{
。。。。
CBitmap bmp;
bmp.LoadBitmap(IDB_YCH);
BITMAP bmInfo;
bmp.GetBitmap(&bmInfo);
int nBmpWidth,nBmpHeight;
nBmpWidth = bmInfo.bmWidth;
nBmpHeight = bmInfo.bmHeight;
CRect clientRC;
GetClientRect(clientRC);
CDC *pDC = GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bmp);
pDC->StretchBlt(0,0,clientRC.Width(),clientRC.Height(),&memDC,0,0,nBmpWidth,nBmpHeight,SRCCOPY);
memDC.DeleteDC();
bmp.DeleteObject();
pDC->SetBkMode(TRANSPARENT);
CFont font;
font.CreatePointFont(350,"华文行楷",pDC);
pDC->SelectObject(&font);
pDC->SetTextColor(RGB(0,0,255));
pDC->SetBkColor(RGB(255,0,0));
pDC->TextOut(10,20,"江山如此多娇。");
pDC->TextOut(10,90,"引无数英雄竞折腰。");
}

功能:静态文本框去除背景,透明。
HBRUSH CP400Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (nCtlColor = CTLCOLOR_STATIC)
{
if (pWnd == GetDlgItem(IDC_STATIC1))
{
 pDC->SetBkColor(RGB(125,255,0));     //文字背景
pDC->SetTextColor(RGB(255,0,0));     //文字颜色
  pDC->SetBkMode(TRANSPARENT);      //不显示文字背景
             hbr = (HBRUSH)::GetStockObject(NULL_BRUSH); //编辑框背景。注意:和文字背景不是一个意思。
}
}
// TODO: Return a different brush if the default is not desired
return hbr;
}

效果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值