BitmapImage クラス

定義

Image.Source プロパティと ImageBrush.ImageSource プロパティの実用的なオブジェクト ソースの種類を提供します。 BitmapImage は、イメージ ソース ファイルを参照する Uniform Resource Identifier (URI) を使用するか、 SetSourceAsync を呼び出してストリームを提供することで定義できます。

public ref class BitmapImage sealed : BitmapSource
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.Activatable(Microsoft.UI.Xaml.Media.Imaging.IBitmapImageFactory, 65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class BitmapImage final : BitmapSource
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Microsoft.UI.Xaml.Media.Imaging.IBitmapImageFactory), 65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class BitmapImage : BitmapSource
Public NotInheritable Class BitmapImage
Inherits BitmapSource
<BitmapImage .../>
継承
Object Platform::Object IInspectable DependencyObject ImageSource BitmapSource BitmapImage
属性

次に、BitmapImage オブジェクトを使用して C# で Image.Source を設定する例を示します。 この例では、 Image オブジェクトは XAML で作成されましたが、ソースやその他のプロパティ値はありません。代わりに、これらの値は、 イメージ が XAML から読み込まれるときに実行時に提供されます。

<Image Loaded="Image_Loaded"/>
void Image_Loaded(object sender, RoutedEventArgs e)
{
    Image img = sender as Image; 
    BitmapImage bitmapImage = new BitmapImage();
    img.Width = bitmapImage.DecodePixelWidth = 80; 
    // Natural px width of image source.
    // You don't need to set Height; the system maintains aspect ratio, and calculates the other
    // dimension, as long as one dimension measurement is provided.
    bitmapImage.UriSource = new Uri(img.BaseUri,"Assets/StoreLogo.png");
    img.Source = bitmapImage;
}

注釈

BitmapImage は、次のイメージ ファイル形式から取得できます。

  • Joint Photographic Experts Group (JPEG)
  • ポータブル ネットワーク グラフィックス (PNG)
  • ビットマップ (BMP)
  • グラフィックス交換形式 (GIF)
  • Tagged Image File Format (TIFF)
  • JPEG XR
  • アイコン (ICO)

イメージ ソースがストリームの場合、そのストリームには、次のいずれかの形式のイメージ ファイルが含まれている必要があります。

BitmapImage クラスは抽象化を表します。そのため、イメージ ソースは非同期的に設定できますが、XAML マークアップではプロパティ値として参照することも、待機可能な構文を使用しないオブジェクトとしてコードで参照することもできます。 コードで BitmapImage オブジェクトを作成すると、最初は有効なソースがありません。 その後、次のいずれかの手法を使用してソースを設定する必要があります。

  • 既定のコンストラクターではなく 、BitmapImage(Uri) コンストラクターを使用します。 これはコンストラクターですが、これは暗黙的な非同期動作があると考えることができます。BitmapImage は、非同期ソース セット操作が成功したことを示す ImageOpened イベントが発生するまで使用する準備ができていません。
  • UriSource プロパティを設定します。 Uri コンストラクターの使用と同様に、このアクションは暗黙的に非同期であり、ImageOpened イベントが発生するまで BitmapImage は使用の準備ができていません。
  • SetSourceAsync を使用します。 このメソッドは明示的に非同期です。 Image.Source などの BitmapImage を使用する可能性があるプロパティは、この非同期動作用に設計されており、完全なソースがまだない BitmapImage を使用して設定されている場合、例外はスローされません。 例外を処理するのではなく、BitmapImage で直接、またはソースを使用するコントロールで ImageOpened イベントまたは ImageFailed イベントを処理する必要があります (これらのイベントがコントロール クラスで使用可能な場合)。

ImageFailedImageOpened は相互に排他的です。 BitmapImage オブジェクトのソース値が設定またはリセットされるたびに、一方のイベントまたはもう一方のイベントが常に発生します。

BitmapImage とエンコード

イメージ ファイルの基になるコーデックのサポートは、Windows の Windows イメージング コンポーネント (WIC) API によって提供されます。 コーデックに関するドキュメントに記載されている特定のイメージ形式の詳細については、「 ネイティブ WIC コーデック」を参照してください。 形式と、Uri (Uniform Resource Identifier) を使用してアプリ リソースから取得されたイメージ ソース ファイルにアクセスする方法の詳細については、「 Image and ImageBrush」を参照してください。

Image、BitmapImage、BitmapSource の API には、メディア形式をエンコードおよびデコードするための専用のメソッドは含まれていません。 エンコード操作とデコード操作はすべてビルトインであり、せいぜいエンコードまたはデコードの局面が読み込みイベント用のイベント データの一部として現れる程度です。 画像エンコードまたはデコードを使用して特別な作業を行う場合は、アプリが画像変換または操作を行っている場合に使用する可能性があります。 Windows.Graphics.Imaging 名前空間で使用できる API を使用する必要があります。 これらのイメージング API は、C++、C#、または JavaScript を使用する Visual Basic または Windows アプリを使用する UWP アプリで使用できます。 これらの API は、Windows 8 の Windows イメージング コンポーネント (WIC) コンポーネントでもサポートされています。

アニメーション画像

バージョン 1607 Windows 10以降、XAML Image 要素はアニメーション GIF 画像をサポートしています。 イメージ ソースとして BitmapImage を使用する場合は、BitmapImage API にアクセスして、アニメーション GIF イメージの再生を制御できます。

  • アニメーション化されたビットマップが読み込まれた直後に再生するかどうかを指定するには、 AutoPlay プロパティ (既定値は true) を使用します。
  • ビットマップをアニメーション化するかどうかをチェックするには、IsAnimatedBitmap プロパティを使用します。
  • アニメーション化されたビットマップの再生を制御するには、Play メソッドと Stop メソッドと共に IsPlaying プロパティを使用します。

注意

ほとんどのアプリでは、ユーザーのアクセシビリティニーズをサポートするために、UISettings.AnimationsEnabledfalse の場合は AutoPlay を false に設定することをお勧めします。 アニメーション GIF のコンテンツがアプリの使いやすさにとって重要な場合は、この操作を行わないでください。

アプリがバージョン 1607 より前のWindows 10のリリースで実行されている場合は、ApiInformation クラスを使用して、これらのメンバーが存在するかどうかをチェックしてから使用する必要があります。 詳細については、「 バージョン アダプティブ コード: 以前のバージョンとの互換性を維持しながら新しい API を使用する」を参照してください。

この例では、アニメーション GIF の使用方法を示します。 ボタンを使用すると、ユーザーはアニメーションを開始または停止できます。 この例では、バージョン アダプティブ コードを使用して、すべてのバージョンのWindows 10で実行できます。 バージョン 1607 より前のバージョンでは、GIF の最初のフレームが表示されますが、アニメーション化されません。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Image Loaded="Image_Loaded">
        <Image.Source>
            <BitmapImage x:Name="imageSource"
                         UriSource="Assets/example.gif"
                         ImageOpened="imageSource_ImageOpened"/>
        </Image.Source>
    </Image>

    <AppBarButton x:Name="playButton"
              Icon="Play"
              Visibility="Collapsed"
              Click="playButton_Click"/>
</Grid>
// Set the AutoPlay property.
private void Image_Loaded(object sender, RoutedEventArgs e)
{
    if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Media.Imaging.BitmapImage", "AutoPlay") == true)
    {
        imageSource.AutoPlay = false;
    }
}

// Show the play/stop button if the image is animated.
private void imageSource_ImageOpened(object sender, RoutedEventArgs e)
{
    var bitmapImage = (BitmapImage)sender;
    // At this point you can query whether the image is animated or not.
    if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Media.Imaging.BitmapImage", "IsAnimatedBitmap") 
        && bitmapImage.IsAnimatedBitmap == true)
    {
        // Enable the play button
        playButton.Visibility = Visibility.Visible;
    }
}

// Play or stop the animated bitmap.
void playButton_Click(object sender, RoutedEventArgs e)
{
    if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Media.Imaging.BitmapImage", "IsPlaying"))
    {
        // You can call the Play and Stop methods safely because is the IsPlaying property is
        // present, these methods are also present.
        if (imageSource.IsPlaying == true)
        {
            playButton.Icon = new SymbolIcon(Symbol.Play);
            imageSource.Stop();
        }
        else
        {
            playButton.Icon = new SymbolIcon(Symbol.Stop);
            imageSource.Play();
        }
    }
}

その他の例については、 アニメーション GIF 再生のサンプルを参照してください。

コンストラクター

BitmapImage()

BitmapImage クラスの新しいインスタンスを初期化します。

BitmapImage(Uri)

指定された Uniform Resource Identifier (URI) を使用して、 BitmapImage クラスの新しいインスタンスを初期化します。

プロパティ

AutoPlay

アニメーション化されたイメージが読み込まれたらすぐに再生するかどうかを示す値を取得または設定します。

AutoPlayProperty

AutoPlay 依存関係プロパティを識別します。

CreateOptions

BitmapImageBitmapCreateOptions を取得または設定します。

CreateOptionsProperty

CreateOptions 依存関係プロパティを識別します。

DecodePixelHeight

イメージのデコード操作に使用する高さを取得または設定します。

DecodePixelHeightProperty

DecodePixelHeight 依存関係プロパティを識別します。

DecodePixelType

デコード操作で DecodePixelWidth 値と DecodePixelHeight 値を解釈する方法を決定する値を取得または設定します。

DecodePixelTypeProperty

DecodePixelType 依存関係プロパティを識別します。

DecodePixelWidth

イメージのデコード操作に使用する幅を取得または設定します。

DecodePixelWidthProperty

DecodePixelWidth 依存関係プロパティを識別します。

Dispatcher

常に Windows アプリ SDK アプリで を返しますnull。 代わりに DispatcherQueue を使用してください。

(継承元 DependencyObject)
DispatcherQueue

このオブジェクトが DispatcherQueue 関連付けられている を取得します。 は DispatcherQueue 、コードが UI 以外のスレッドによって開始された場合でも、UI スレッド上の にアクセス DependencyObject できる機能を表します。

(継承元 DependencyObject)
IsAnimatedBitmap

イメージがアニメーション化されているかどうかを示す値を取得します。

IsAnimatedBitmapProperty

IsAnimatedBitmap 依存関係プロパティを識別します。

IsPlaying

アニメーション化されたイメージが再生されているかどうかを示す値を取得します。

IsPlayingProperty

IsPlaying 依存関係プロパティを識別します。

PixelHeight

ビットマップの高さ (ピクセル単位) を取得します。

(継承元 BitmapSource)
PixelWidth

ビットマップの幅 (ピクセル単位) を取得します。

(継承元 BitmapSource)
UriSource

この BitmapImage を生成したグラフィックス ソース ファイルの URI (Uniform Resource Identifier) を取得または設定します。

UriSourceProperty

UriSource 依存関係プロパティを識別します。

メソッド

ClearValue(DependencyProperty)

依存関係プロパティのローカル値をクリアします。

(継承元 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

依存関係プロパティに対して確立された基本値を返します。これは、アニメーションがアクティブでない場合に適用されます。

(継承元 DependencyObject)
GetValue(DependencyProperty)

DependencyObject から依存関係プロパティの現在の有効な値を返します。

(継承元 DependencyObject)
Play()

アニメーション化されたイメージのアニメーションを開始します。

ReadLocalValue(DependencyProperty)

ローカル値が設定されている場合は、依存関係プロパティのローカル値を返します。

(継承元 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

この DependencyObject インスタンスの特定の DependencyProperty に対する変更をリッスンするための通知関数を登録します。

(継承元 DependencyObject)
SetSource(IRandomAccessStream)

ストリームにアクセスして BitmapSource のソース イメージを設定します。 ほとんどの呼び出し元では、代わりに SetSourceAsync を使用する必要があります。

(継承元 BitmapSource)
SetSourceAsync(IRandomAccessStream)

ストリームにアクセスし、結果を非同期的に処理することで 、BitmapSource のソース イメージを設定します。

(継承元 BitmapSource)
SetValue(DependencyProperty, Object)

DependencyObject の依存関係プロパティのローカル値を設定します。

(継承元 DependencyObject)
Stop()

アニメーション化されたイメージのアニメーションを終了します。

UnregisterPropertyChangedCallback(DependencyProperty, Int64)

RegisterPropertyChangedCallback を呼び出して以前に登録した変更通知を取り消します。

(継承元 DependencyObject)

イベント

DownloadProgress

BitmapImage コンテンツのダウンロードの進行状況で大幅な変更が発生したときに発生します。

ImageFailed

画像の取得または形式に関連するエラーが発生したときに発生します。

ImageOpened

イメージ ソースがダウンロードされ、エラーなしでデコードされたときに発生します。 このイベントを使用して、イメージをレンダリングする前にイメージのサイズを決定できます。

適用対象

こちらもご覧ください