キャンバス (特定の幅がある) のピクセル単位の幅を決定するにはどうすればよいですか?
AnimatedImage コントロールにビットマップがあり、ビットマップの幅がピクセル単位でわかっているので、水平方向に正確にキャンバスに収まるようにビットマップをスケーリングしたいと考えています。このスケールをどのように決定できますか?
注: ビットマップは既に読み込まれているため、RenderTargetBitmap を使用する必要はありません。
WPF ユニットでは、デバイスに依存しません。単位の実際のピクセル サイズを計算する式は次のとおりです。
WPF ユニットあたりのピクセル数 = ConstantWPFUnit サイズ * モニター DPI;
要素のサイズ (ピクセル単位) = WPF ユニットあたりのピクセル数 * MyElement.ActualWidth
一定の WPF ユニット サイズは 1/96 です。私の記憶が正しければ、モニターの DPI は、SystemInformation.GetPrimaryMonitor などから返されるクラスのプロパティとして見つけることができます。
FrameworkElement の ActualWidth は、デバイスに依存しない単位であり、レイアウトが行われた後に要素が実際に占める幅です。このプロパティに、上で計算した WPF 単位あたりのピクセル数を掛けるだけで、答えが得られます。
しかし、あなたは多くの手動コーディングを行っているのではないかと疑っています。画像やその他の視覚要素を任意の方法でストレッチするには、通常、対象のコントロール/ブラシのプロパティを設定するだけで実現できます。ビットマップを含む要素に対して HorizontalAlignment="Stretch" および VerticalAlignment="Center" を作成しようとしましたか?