本文へスキップ
BecomeCoder

C# WPFコース · 第1章 WPF ― デスクトップアプリ開発 · レッスン10

Image(画像)

ブラウザで完結

導入

Imageは、画像を表示するコントロールです。ロゴ・アイコン・写真などをUIに載せます。

XAMLサンプル(読み物)

<!-- Source に画像パス、Stretch で拡大縮小の仕方を指定 -->
<Image Source="/Assets/logo.png" Width="120" Stretch="Uniform" />
// コードから差し替える場合
img.Source = new BitmapImage(new Uri("/Assets/logo.png", UriKind.Relative));

主なプロパティ

  • Source … 表示する画像
  • Stretch … 拡大縮小の仕方:None(原寸)/Fill(枠いっぱい・比率無視)/Uniform(比率保持で収める)/UniformToFill(比率保持で埋める)
  • Width / Height … 表示サイズ

補足: プロジェクトに画像を追加し、プロパティの**ビルドアクションをResource**にすると/Assets/...の形で参照できます。比率を崩したくないときはStretch="Uniform"

MVVM(実務ではこう書く)

表示する画像を実行時に切り替えるなら、画像パス(またはURI)をViewModelのプロパティに持ち、Sourceにバインドします。

<Image Source="{Binding LogoPath}" Width="120" Stretch="Uniform" />
public string LogoPath
{
    get => _logoPath;
    set { _logoPath = value; OnPropertyChanged(); }
}
// 例: 状態に応じて LogoPath = "/Assets/logo_dark.png"; と差し替える

固定画像ならSource="/Assets/logo.png"の直書きで十分。切り替えが必要なときだけバインドします。

試す(ローカル)

  • 画像をプロジェクトに追加(ビルドアクション=Resource)してSourceに指定。Stretchを切り替えて表示の違いを確認。
  • 発展:SourceをViewModelのLogoPathにバインドし、実行中にパスを変えて画像が切り替わることを確認。

まとめ

  • Imageは画像表示。Sourceで画像、Stretchで拡大縮小の仕方
  • 画像はビルドアクションResourceで埋め込むと参照しやすい
  • 実務で切り替えが要るときはSourceをViewModelのパスにバインド

次回: 画面とデータを連動させる「データバインディング」です。

実際に動かしてみよう

下のエディタに XAML を書くと、右側のプレビューにその場で WPF 風のUIが描画されます。テキスト入力・チェック・選択はそのまま動き、`{Binding}` で結んだ TextBox と TextBlock は打った文字がリアルタイムで反映されます。本文の XAML を打ち込んだり、属性(Width・Margin・FontSize・色など)を書き換えたりして、レイアウトの変化を確かめながら進めましょう(C# のコードビハインドや Command、ItemsSource などC#側のデータに依存する処理は実行されません。それらは Visual Studio で試します)。

XAML (WPF) プレビュー

書いた XAML をその場で WPF 風の画面に描画する学習用プレビューを読み込みます(本物のWPFではなく、レイアウトとコントロールの見た目・{Binding}の双方向バインディングを再現したものです。C#のコードビハインド/Command は実行されません)。
スクロールして表示された時点でも自動で読み込まれます。