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

MFC 對話框顯示圖片三種基礎方法:靜態資源、背景筆刷與 ActiveX 控件

     編輯:VC 教學

方法一:Picture Control 綁定靜態資源 (最簡單)

  1. 資源編輯器 Import 位圖,ID: IDB_BITMAP2。
  2. 對話框放入 Picture Control,屬性:Type=Bitmap、Image 下拉選 IDB_BITMAP2。
  3. 執行即見圖片。缺點:僅支援 BMP、需預先加入資源、無法動態切換。

方法二:OnCtlColor 繪製背景筆刷 (全視窗背景)

標頭檔


class CTestDlg : public CDialog
{
    CBrush m_brBk; // 背景筆刷
    // ...
};

實作檔


BOOL CTestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    CBitmap bmp;
    bmp.LoadBitmap(IDB_BITMAP2);
    m_brBk.CreatePatternBrush(&bmp); // 建立紋理筆刷
    bmp.DeleteObject();
    return TRUE;
}

HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    if (pWnd == this) // 對話框本身
        return m_brBk;
    return hbr;
}

缺點:覆蓋整個對話框背景,子控件背景亦受影響,需額外處理控件透明度。

方法三:Kodak Image Edit ActiveX 控件 (支援多格式)

前置準備

  • 確認系統已註冊:ImgAdmin.ocx, ImgCmn.dll, ImgEdit.ocx, ImgScan.ocx, ImgShl.dll, ImgThumb.ocx, ImgUtil.dll (缺則從他機複製並 regsvr32 註冊)。

整合步驟

  1. 資源編輯器 → 對話框右鍵 → Insert ActiveX Control → 選擇 Kodak Image Edit Control。
  2. ClassWizard 為控件加入變數 m_ctrlPicture (類型 CImageEditCtrl 或對應包裝類)。
  3. OnInitDialog 載入圖片:

BOOL CTestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    m_ctrlPicture.SetImage(_T("aa.jpg")); // 相對或絕對路徑
    m_ctrlPicture.Display();
    return TRUE;
}

優點:支援 JPEG、TIFF、PNG、GIF 等多種格式、內建縮放、列印、掃描介面。
缺點:部署需攜帶多個 OCX/DLL、授權問題、較重量級。

比較總結

方法支援格式動態切換部署複雜度適用場景
Picture Control (資源)BMP否無固定圖示、Logo
OnCtlColor 筆刷BMP是 (換筆刷)無全視窗背景圖
Kodak ActiveX多格式是高影像檢視、編輯應用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved