こんにちは、現在の解像度に基づいてウィンドウの位置を計算する DPI 対応アプリケーションを実装しています。
DPI設定を変更してもOSが再ログインを要求しないWindows 8.1で以下のコードをテストしました。DPI をすぐに適用します。
var presentationSource = PresentationSource.FromVisual(this);
transform = presentationSource.CompositionTarget.TransformToDevice;
int width = transform.m11 * SystemParameters.PrimaryScreenWidth;
int height = transform.M22* SystemParameters.PrimaryScreenHeight;
しかし、ログアウトして再ログインせずに mspanel を使用して DPI を変更すると、TransformToDevice() は新しい値ではなく古い値を返します。DPIの設定が変わればこの変換マトリックスも変わると思っていました。
DPI 設定が変更されたときに呼び出すメソッドはありますか?