ImageBrush.ImageSource プロパティ

定義

この ImageBrush によって表示されるイメージ ソースを取得または設定します。 コードでは、 ImageSource サブクラス インスタンスでこれを設定します。XAML では、これを URI でイメージ ソース ファイルに設定します。

public:
 property ImageSource ^ ImageSource { ImageSource ^ get(); void set(ImageSource ^ value); };
ImageSource ImageSource();

void ImageSource(ImageSource value);
public ImageSource ImageSource { get; set; }
var imageSource = imageBrush.imageSource;
imageBrush.imageSource = imageSource;
Public Property ImageSource As ImageSource
<ImageBrush ImageSource="imageUri"/>

プロパティ値

画像ソースを表すオブジェクト。この ImageBrush がコンテンツに適用されるときに表示されます。

注釈

イメージ ソース ファイルまたはストリームからイメージ ソースを設定することは、本質的に非同期アクションです。 有効なイメージ ソース ファイルに解決できない URI (Uniform Resource Identifier) 値にソースを設定しても、エラーはスローされません。 代わりに、ImageBrushImageFailed イベントを発生させます。 イメージ ソース ファイルが正しく読み込まれたことを確認する場合は、検証のために ImageOpened を処理し、フォールバック イメージ ソースを提供したり UI を再計算したりする方法として ImageFailed を処理できます。

XAML での ImageSource の設定

このプロパティは XAML で設定できますが、この場合は ImageSource 属性値を Uniform Resource Identifier (URI) を表す文字列として設定します。 この動作は、文字列を Uniform Resource Identifier (URI) として処理する基になる型変換に依存し、 BitmapImage(Uri) コンストラクターと同等の内部を呼び出します。

ImageFailed イベントは、XAML の初期 ImageSource 属性値で有効なソースが指定されていない場合に発生する可能性があります。 相対パスを使用して、アプリでパッケージ化したイメージを参照するか、絶対 Uniform Resource Identifier (URI) を使用してサーバーからイメージを参照できます。 アプリの一部としてパッケージ化されたイメージ ソースを使用している場合は、 ms-appx または ms-resource スキームを使用するのが一般的です。

コードでの ImageSource の設定

コードを使用して ImageBrush を定義する場合、ImageBrush.ImageSource には、コードに BitmapImage (UNIFORM Resource Identifier (URI) ではなく) が必要です。 ソースがストリームである場合は、SetSourceAsync メソッドを使って値を初期化します。 ソースが、ms-appx または ms-resource スキームを使用するアプリ内のコンテンツを含むファイルを参照する Uniform Resource Identifier (URI) の場合は、Uniform Resource Identifier (URI) を受け取る BitmapImage コンストラクターを使用します。 画像ソースが使えるようになるまで代替コンテンツを表示することが必要であるなど、画像ソースの取得やデコードについてタイミングの問題がある場合は、ImageOpened イベントを処理することも検討してください。 コード例については、「 XAML イメージのサンプル 」を参照してください。

リソース要求のスコープ設定に役立つ UI 内の別のオブジェクトに関連して URI を作成する必要がある場合は、UI 内の別のオブジェクトで呼び出される FrameworkElement.BaseUri プロパティを使用できます。 これにより、XAML ページがアプリのプロジェクト構造内から取得されるベース URI が提供されます。

注意

現在のスケール修飾子とカルチャ修飾子を使用して非修飾リソースにアクセスする場合は自動処理を使用できます。また、 ResourceManagerResourceMap をカルチャとスケールの修飾子と共に使用してリソースを直接取得することもできます。 詳しくは、「リソース管理システム」をご覧ください。

画像ソースとスケーリング

Windows 8スケーリング時にアプリが適切に表示されるように、いくつかの推奨サイズでイメージ ソースを作成する必要があります。 ImageBrush に ImageSource を指定する場合は、現在のスケーリングに適したリソースを自動的に参照する名前付け規則を使用できます。 この名前付け規則の詳細や関連情報については、「クイック スタート: ファイルまたは画像リソースの使用」をご覧ください。

スケーリングの設計方法の詳細については、「 レイアウトとスケーリングの UX ガイドライン」を参照してください。

アプリ リソースの詳細と、アプリでイメージ ソースをパッケージ化する方法については、「 アプリ リソースの定義」を参照してください。

以前のバージョンの注意事項

Windows 8

Windows 8、ImageBrush がコントロールに適用される XAML スタイルまたはテンプレートの一部である場合、XAML 属性 URI 値からの ImageSource 解決に問題がありました。 コントロールの使用では、通常はアプリから取得されるスタイルまたはテンプレートに適したベース URI ではなく、コンポーネント固有のベース URI が使用される場合があります。 この問題は、Windows 8.1 以降で修正されています。ベース URI は、ベース URI を必要とするスコープに応じて、アプリ リソースまたはコンポーネント リソースに対して正しく決定されます。 Windows 8用にコンパイルされたアプリは、XAML URI が解決され、アプリに画像が表示される "間違った" 場所にイメージ ソース ファイルを配置することで、この動作の回避策を使用している可能性があります。 XAML を Windows 8 から Windows 8.1 に移行する場合は、XAML からスタイルまたはテンプレートで ImageBrush の使用状況をテストし、アプリのイメージ解像度がWindows 8.1で動作していることを確認する必要があります。 問題が発生した場合は、パッケージ内でイメージ ソース ファイルを移動して、新しい動作の正しいリソース スコープになるようにする必要があります。

Windows 8 用にコンパイルしたアプリは、Windows 8.1 上で実行しても Windows 8 のときと同じ動作になります。

適用対象

こちらもご覧ください