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

2025-01-04 06:13:13
推荐回答(3个)
回答1:

  设置静态文本框背景透明
  首先在类向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);
  }

回答2:

静态文本的话 建议你直接删除static控件
直接在你的主窗体重绘函数OnPaint函数里使用dc.SetBkMode(Transparent); dc.textout(...);
即可完美实现背景透明。

回答3:

有win32的解决方案吗