2016-08-03 7 views
1

に依存します:ツリービュー項目(イメージ)を含んを、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?複数の画像を参照し、ツリー内にある場合は、最後までツリーをスクロールする問題をレンダリングさせる):

enter image description here

しかし、私は24または32ビットイメージ(bmp/png/jpg)に変更すると、853 * 640(1.33 *元のサイズ)にstrecthed、strecthed/blurred表示されます。ツリー(半分サイズの)中 (ただし、この場合は、最後にツリーをスクロールすると、正常に動作し、無レンダリングの問題) レンダリング画像(24ビットBMP):

enter image description here

この動作は、何ですかなぜ?ソースイメージのビット深度を簡単に変更すると、レンダリングされたイメージの寸法が変わるのはなぜですか?

+0

私はこれが理由になると思います:「実際、私は定期的にPNG画像を見ました。 PNGのデフォルトの解像度は72dpiですが、WPFのデフォルトの画面解像度は96dpiです。 WPFは、ピクセルサイズの133%にスケーリングされたpngビットマップをレンダリングすることによって、これを考慮に入れます。これは、技術的には正しいが通常はユーザーが望んでいないものです。代わりにgifまたはjpgを使うこともできますし、イメージをサイズの0.75にスケーリングするLayoutTransformと組み合わせることも、イメージコントロールのサイズを明示的に設定することもできます。 – Zotyi

答えて

0

私は問題があります:WPFデフォルトのDPIは96、私のビットマップは72です。8ビットと4ビットを除いて、これらは不特定でした(この場合、デフォルトの96が考えられました)。 ビットマップを96dpiに変換しましたが、もうサイズ変更はしません。 詳細については、質問の下のコメントを参照してください。

関連する問題