に依存します:ツリービュー項目(イメージ)を含んを、XAMLでこのように宣言:画像サイズが、私は非常に奇妙なことを経験していた画像の色ビット深度
<ControlTemplate x:Key="ImageTemplate">
<Image VerticalAlignment="Top"
Visibility="{Binding IsImageVisible,Converter={StaticResource BoolToVisibility}}"
RenderOptions.BitmapScalingMode="NearestNeighbor"
SnapsToDevicePixels="True"
Stretch="None">
<Image.Source>
<BitmapImage UriSource="c:\\imageBMP4.bmp" />
<!-- <BitmapImage UriSource="c:\\imageBMP8.bmp" /> -->
<!-- <BitmapImage UriSource="c:\\imageBMP24.bmp" /> -->
<!-- <BitmapImage UriSource="c:\\imageBMP32.bmp" /> -->
<!-- <BitmapImage UriSource="c:\\imagePNG8.png" /> -->
<!-- <BitmapImage UriSource="c:\\imagePNG24.png" /> -->
<!-- <BitmapImage UriSource="c:\\imagePNG32.png" /> -->
<!-- <BitmapImage UriSource="c:\\imageJPG24.jpg" /> -->
</Image.Source>
</Image>
</ControlTemplate>
すべての画像塗りつぶし、640 * 480です青色の白い水平1ピクセルラインが付いています。
私が経験したことは、4ビットまたは8ビットのビットマップ(bmp)を使用すると、画面上のピクセルごとに640×480のサイズでレンダリングされます。ツリー内 レンダリング画像(8ビットBMP)(半分の大きさ): (TreeView/ScrollView rendering bug with bitmaps?複数の画像を参照し、ツリー内にある場合は、最後までツリーをスクロールする問題をレンダリングさせる):
しかし、私は24または32ビットイメージ(bmp/png/jpg)に変更すると、853 * 640(1.33 *元のサイズ)にstrecthed、strecthed/blurred表示されます。ツリー(半分サイズの)中 (ただし、この場合は、最後にツリーをスクロールすると、正常に動作し、無レンダリングの問題) レンダリング画像(24ビットBMP):
この動作は、何ですかなぜ?ソースイメージのビット深度を簡単に変更すると、レンダリングされたイメージの寸法が変わるのはなぜですか?
私はこれが理由になると思います:「実際、私は定期的にPNG画像を見ました。 PNGのデフォルトの解像度は72dpiですが、WPFのデフォルトの画面解像度は96dpiです。 WPFは、ピクセルサイズの133%にスケーリングされたpngビットマップをレンダリングすることによって、これを考慮に入れます。これは、技術的には正しいが通常はユーザーが望んでいないものです。代わりにgifまたはjpgを使うこともできますし、イメージをサイズの0.75にスケーリングするLayoutTransformと組み合わせることも、イメージコントロールのサイズを明示的に設定することもできます。 – Zotyi