VC怎么设置静态文本的背景透明。

要实现真正的透明,不要改了对话框的背景然后又设置文本框的背景颜色。那样叫透明吗?网上的方法试了,不知道为什么不可以。... 要实现真正的透明,不要改了对话框的背景然后又设置文本框的背景颜色。那样叫透明吗?网上的方法试了,不知道为什么不可以。 展开
 我来答
匿名用户
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);
  }
wind556
2010-12-28 · TA获得超过250个赞
知道小有建树答主
回答量:673
采纳率:50%
帮助的人:281万
展开全部
静态文本的话 建议你直接删除static控件
直接在你的主窗体重绘函数OnPaint函数里使用dc.SetBkMode(Transparent); dc.textout(...);
即可完美实现背景透明。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友82c5e5f
2019-04-18
知道答主
回答量:3
采纳率:0%
帮助的人:2150
展开全部
有win32的解决方案吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式