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

C# 圖片處理實戰:為圖片添加矩形與橢圓相框效果

     編輯:關於C語言

前言

在圖像處理應用中,為圖片添加裝飾性邊框是常見需求。本文將展示如何使用 C# 的 GDI+ 繪圖功能,為載入的圖片繪製矩形與橢圓相框效果,並說明關鍵繪圖參數的設定技巧。

核心實現邏輯

主要步驟如下:

  1. 載入原始圖片至 Bitmap 物件。
  2. 建立 Graphics 物件進行繪圖操作。
  3. 設定畫筆顏色、寬度與虛線樣式。
  4. 根據圖片尺寸計算邊框寬度(本例採圖寬 20%)。
  5. 繪製矩形或橢圓邊框。
  6. 將處理後的圖片指派給 PictureBox 顯示。

完整代碼範例

/// 
/// 為圖片添加矩形相框
/// 
/// 圖片路徑
/// 目標 PictureBox 控制項
public void AddRectangularFrame(string imagePath, PictureBox pic)
{
    try
    {
        using (Bitmap backBmp = new Bitmap(imagePath))
        {
            // 邊框寬度設為圖片寬度的 20%
            float borderWidth = backBmp.Width * 0.2f;

            using (Graphics g = Graphics.FromImage(backBmp))
            using (Brush brush = new SolidBrush(Color.FromArgb(0, 156, 255))) // 亮藍色
            using (Pen pen = new Pen(brush, borderWidth))
            {
                pen.DashStyle = DashStyle.Custom; // 可自定義虛線樣式
                g.DrawRectangle(pen, new Rectangle(0, 0, backBmp.Width, backBmp.Height));
            }

            pic.BackgroundImage = backBmp;
        }
    }
    catch (Exception ex)
    {
        // 建議記錄日誌而非靜默吞噬
        Debug.WriteLine($"添加矩形相框失敗: {ex.Message}");
    }
}

/// 
/// 為圖片添加橢圓相框
/// 
public void AddEllipseFrame(string imagePath, PictureBox pic)
{
    try
    {
        using (Bitmap backBmp = new Bitmap(imagePath))
        {
            float borderWidth = backBmp.Width * 0.2f;

            using (Graphics g = Graphics.FromImage(backBmp))
            using (Brush brush = new SolidBrush(Color.FromArgb(0, 156, 255)))
            using (Pen pen = new Pen(brush, borderWidth))
            {
                pen.DashStyle = DashStyle.Custom;
                g.DrawEllipse(pen, new Rectangle(0, 0, backBmp.Width, backBmp.Height));
            }

            pic.BackgroundImage = backBmp;
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine($"添加橢圓相框失敗: {ex.Message}");
    }
}

關鍵技術點解析

1. 使用 using 確保資源釋放

Bitmap、Graphics、Pen、Brush 皆實作 IDisposable,務必包裹在 using 區塊中,避免 GDI+ 物件洩漏導致「generic GDI+ error」。

2. 邊框寬度動態計算

採用 backBmp.Width * 0.2f 使邊框隨圖片尺寸自適應,比固定像素值更具彈性。

3. 顏色與樣式客製化

  • Color.FromArgb(0, 156, 255) 定義專屬品牌色。
  • DashStyle.Custom 可搭配 pen.DashPattern 實現虛線、點線等多樣化效果。

4. 異常處理最佳實踐

避免空 catch 區塊,至少記錄異常資訊,便於排查生產環境問題。

延伸應用建議

  • 支援多種邊框樣式(雙線、陰影、漸變)。
  • 結合 GraphicsPath 實現圓角矩形、多邊形等複雜形狀。
  • 提供使用者介面讓終端用戶自訂顏色、寬度、樣式。

總結

透過 GDI+ 的 Graphics.DrawRectangle 與 DrawEllipse 方法,結合適當的資源管理與參數化設計,即可輕鬆實現圖片相框功能。本文提供的封裝方法可直接整合至 WinForms 專案,並易於擴展更多裝飾效果。

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