首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

PictureBox 上疊加文字實作:透明 Label 與 GDI+ 繪製兩種方案比較

     編輯:關於.NET

需求背景

在 EyesBaby 專案的休息提醒視窗中,需於動態圖片 (GIF) 上顯示倒數秒數。直接在 PictureBox 上放置 Label 會因背景遮蓋導致陰影,影響視覺整合度。本文介紹兩種實現文字與圖片完美融合的方案。

方案一:Label 背景透明化 + 父容器設定 (推薦用於動態圖片)

pictureBox1.SendToBack();
// 設定 Label 背景為透明
lblMsg.BackColor = Color.Transparent;
// 關鍵:將 Label 父容器指定為 PictureBox
lblMsg.Parent = pictureBox1;
// 確保 Label 置於最上層
lblMsg.BringToFront();

優點:支援動態圖片 (GIF) 播放期間文字同步更新;缺點:若 PictureBox 尺寸變動需手動調整 Label 位置。

方案二:GDI+ 直接繪製文字於圖片表面 (適用靜態圖片)

pictureBox1.CreateGraphics().DrawString(
    lblMsg.Text,
    lblMsg.Font,
    new SolidBrush(lblMsg.ForeColor),
    lblMsg.Left - pictureBox1.Left,
    lblMsg.Top - pictureBox1.Top);

優點:文字與圖片合為一體,無層級管理問題;缺點:不適用動態圖片,因 GIF 每幀重繪會清除已繪文字,導致閃爍或消失。

專案實際採用

EyesBaby 休息視窗使用動態 GIF,故採用 方案一。若為靜態圖片背景,方案二效能更佳且程式碼更簡潔。

相關資源

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