首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 繪製陰影文字效果:透明背景模式實作

     編輯:VC 教學

前言

在視窗繪圖中,文字陰影效果能增強可讀性與視覺層次。關鍵在於將背景模式設為透明 (TRANSPARENT),使後繪製的文字不會被不透明背景遮蓋。本文示範以紅色文字疊加黑色陰影的簡單實作。

核心程式碼

void CShadowTextView::OnDraw(CDC* pDC)
{
    CRect rcView;
    GetClientRect(&rcView);

    CString str(_T("Awesome Shadow Text..."));

    // 設定背景模式為透明
    pDC->SetBkMode(TRANSPARENT);

    // 1. 繪製黑色陰影文字 (偏移 1,1)
    rcView.OffsetRect(1, 1);
    pDC->SetTextColor(RGB(0, 0, 0));
    pDC->DrawText(str, str.GetLength(), &rcView,
        DT_SINGLELINE | DT_CENTER | DT_VCENTER);

    // 2. 繪製紅色主文字 (回到原位置)
    rcView.OffsetRect(-1, -1);
    pDC->SetTextColor(RGB(255, 0, 0));
    pDC->DrawText(str, str.GetLength(), &rcView,
        DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}

關鍵點解析

步驟說明
SetBkMode(TRANSPARENT)關鍵:讓文字背景透明,後繪文字不會蓋掉先繪文字。
OffsetRect(1,1)建立陰影偏移量,視覺上形成立體感。
先畫陰影後畫主文字繪製順序決定層疊關係。
DT_SINGLELINE | DT_CENTER | DT_VCENTER單行置中對齊,自動處理換行與垂直置中。

擴展應用

  • 調整偏移量 (OffsetRect(2,2)) 可改變陰影深度。
  • 使用 GetTextExtentPoint32 計算文字範圍,精確控制繪製區域。
  • 結合 SetTextAlign 實現不同對齊方式。
  • 進階:使用 GradientFill 或 Alpha Blending 產生漸層/半透明陰影。

結語

透明背景模式是 GDI 文字特效的基石。僅需幾行程式碼即可實現專業級陰影文字,廣泛應用於標題列、按鈕、狀態列等介面元素。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved