RenderTargetBitmapとロジカルピクセルの関係メモ

あるUIElementを画面に出力する場合、ロジカルピクセルと実際に(画面上で)表示してる物理ピクセルは次のような関係になる。

表示する画面のWindows.Graphics.Display.DisplayInformation.GetForCurrentView().ResolutionScaleで得られる値がResolutionScale.Scale140Percentならスケールを1.4、ResolutionScale.Scale180Percentなら1.8として、

実際に表示してる物理ピクセル=ロジカルピクセル×スケール

これは直感的にはスケールが大きいと同じものをより多くの実ピクセルを使って表示する=表示解像度が上がるとなる。


これに従いRenderTargetBitmapでRenderAsyncしてGetPixelsAsyncで得られるピクセルは実際に表示してる物理ピクセルと同等。

 
BitmapImageで画像を取得しImageで表示するとその画像の実ピクセルとそれを表示するためのロジカルピクセルは等しくなる=表示してる物理ピクセルは画像の実ピクセルに上記のスケールをかけたもの。

UIElementのScaleTransformを(1/上記のスケール)とするとスケールが違う画面上でRenderTargetBitmapから得られるピクセルは等しくなる(はず)。