首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

WPF 應用程式讀取本地圖片並顯示於視窗完整教學

     編輯:程式設計綜合問答

關鍵概念釐清

提問者提到「mpf 窗體」,實為 WPF (Windows Presentation Foundation) 的筆誤。WPF 與 WinForms 架構截然不同,圖片顯示方式也有所差異。

核心步驟

  1. 專案引用:確保專案目標框架為 .NET Framework 4.x 或 .NET Core 3.1+ / .NET 5+。
  2. XAML 定義 Image 控件:
    <Window x:Class="WpfApp.MainWindow"
            xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
            Title="圖片顯示範例" Height="450" Width="800">
        <Grid>
            <Image x:Name="imgPhoto" Stretch="Uniform" Margin="10"/>
        </Grid>
    </Window>
  3. 後端程式碼載入圖片:
    using System.Windows.Media.Imaging;
    using System.IO;
    
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            LoadImage(@"C:\Photos\sample.jpg");
        }
    
        private void LoadImage(string path)
        {
            if (!File.Exists(path)) return;
    
            var bitmap = new BitmapImage();
            bitmap.BeginInit();
            bitmap.CacheOption = BitmapCacheOption.OnLoad; // 讀取後釋放檔案鎖定
            bitmap.UriSource = new Uri(path, UriKind.Absolute);
            bitmap.EndInit();
            bitmap.Freeze(); // 跨執行緒安全
    
            imgPhoto.Source = bitmap;
        }
    }

常見坑點

  • 檔案鎖定:未設定 CacheOption.OnLoad 會導致檔案被佔用,無法覆寫或刪除。
  • 相對路徑:若圖片隨專案部署,建議設為「資源」或「內容」複製到輸出目錄,使用 pack://application:,,,/Images/photo.jpg 格式 URI。
  • 大圖記憶體:載入超大圖片時,設定 DecodePixelWidth/Height 縮小解碼尺寸,避免 OOM。

參考資源

官方範例:WPF 如何載入點陣圖

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