VC怎么设置静态文本的背景透明。
要实现真正的透明,不要改了对话框的背景然后又设置文本框的背景颜色。那样叫透明吗?网上的方法试了,不知道为什么不可以。...
要实现真正的透明,不要改了对话框的背景然后又设置文本框的背景颜色。那样叫透明吗?网上的方法试了,不知道为什么不可以。
展开
3个回答
2015-08-03
展开全部
设置静态文本框背景透明
首先在类向control型ctatic变量(假设为m_text),然后在对话框的OnPaint函数里添加
CPaintDC pDC(&m_text);
CRect rt;
m_text.GetClientRect(&rt);//m_text为文本框对应的变量
rt.top-=5;
rt.left-=5;
rt.bottom+=5;
rt.right+=5;
pDC.SetBkMode(TRANSPARENT);
pDC.DrawText("文本",&rt,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
2.窗口淡入淡出
int CMyDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
......
AnimateWindow(GetSafeHwnd(), 1000, AW_BLEND|AW_CENTER);
......
}
void CMyDlg::OnClose()
{
......
AnimateWindow(GetSafeHwnd(), 1000, AW_HIDE|AW_CENTER);
......
}
与静态文本框相关的颜色层次有:对话框背景色,文本框背景色,文字颜色和文字背景色。
相关函数有:
pDC->SetTextColor(RGB(150, 100, 100)) :设置文字颜色的函数
pDC->SetBkColor(RGB(0,125,1)) :设置文字背景色的函数
pDC->SetBkMode(TRANSPARENT):设置文字背景色是否透明 ,如果设置为TRANSPARENT,则设置文字背景色的函数无效。
文本框的背景色缺省为对话框背景色,如果文本框的下面有图形,则使用NULL_BRUSH使文本框透明,代码如下:
if ( nCtlColor==CTLCOLOR_STATIC||nCtlColor==CTLCOLOR_BTN||nCtlColor==CTLCOLOR_MAX )
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
首先在类向control型ctatic变量(假设为m_text),然后在对话框的OnPaint函数里添加
CPaintDC pDC(&m_text);
CRect rt;
m_text.GetClientRect(&rt);//m_text为文本框对应的变量
rt.top-=5;
rt.left-=5;
rt.bottom+=5;
rt.right+=5;
pDC.SetBkMode(TRANSPARENT);
pDC.DrawText("文本",&rt,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
2.窗口淡入淡出
int CMyDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
......
AnimateWindow(GetSafeHwnd(), 1000, AW_BLEND|AW_CENTER);
......
}
void CMyDlg::OnClose()
{
......
AnimateWindow(GetSafeHwnd(), 1000, AW_HIDE|AW_CENTER);
......
}
与静态文本框相关的颜色层次有:对话框背景色,文本框背景色,文字颜色和文字背景色。
相关函数有:
pDC->SetTextColor(RGB(150, 100, 100)) :设置文字颜色的函数
pDC->SetBkColor(RGB(0,125,1)) :设置文字背景色的函数
pDC->SetBkMode(TRANSPARENT):设置文字背景色是否透明 ,如果设置为TRANSPARENT,则设置文字背景色的函数无效。
文本框的背景色缺省为对话框背景色,如果文本框的下面有图形,则使用NULL_BRUSH使文本框透明,代码如下:
if ( nCtlColor==CTLCOLOR_STATIC||nCtlColor==CTLCOLOR_BTN||nCtlColor==CTLCOLOR_MAX )
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,255,255));
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
展开全部
静态文本的话 建议你直接删除static控件
直接在你的主窗体重绘函数OnPaint函数里使用dc.SetBkMode(Transparent); dc.textout(...);
即可完美实现背景透明。
直接在你的主窗体重绘函数OnPaint函数里使用dc.SetBkMode(Transparent); dc.textout(...);
即可完美实现背景透明。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询