8
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

WPF BitmapImageをImageにバインドしたのにうまく表示されない

「イメージファイル(png)をBitmapImageに読み込んでxaml上でImageにバインドしたけど表示されないことがある」
という問題が発生。表示できるものとできないものがある。
結果、うまく表示できるようになったのでそのメモ。

結論:Imageの「Stretch="None"」の指定やめて、Witdh,Heightにイメージのサイズを指定したら表示された

うまく表示されないときのxaml。

<Image Source="{Binding ImageSource}" Stretch="None"/>

うまく表示されるxaml。

<Image Source="{Binding ImageSource}" Width="{Binding RelativeSource={RelativeSource Self}, Path=Source.PixelWidth}" Height="{Binding RelativeSource={RelativeSource Self}, Path=Source.PixelHeight}" />

修正は二箇所。

修正1 Stretch="None"はずした

Stretchの説明には、None「コンテンツの現在のサイズが維持されます。」と書いてある。
なので、てっきりNoneにすればいい具合に等倍で表示されると思い込んで指定してた。

修正2 Width, Heightの設定

BitmapImageがおかしいんじゃないかと思い調べたところ、Width, Heightに謎の巨大な値が入っていた(Dpiとの兼ね合い?)。
PixelWidth, PixelHeightには正しいイメージのサイズが入っていたので、ImageのWidth,Heightにその値をバインドしたところ、うまく表示されるようになった。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
8
Help us understand the problem. What are the problem?