WinForms アプリの WPF ホスト コントロールにドッキングされた WPF コントロールがあります。WPF コントロールは水平方向と垂直方向の両方に拡大するように設定されており、ホスト コントロールは固定されたグループ ボックスにドッキングされています。
私の WPF コントロールには、Canvas から派生したカスタム クラスである子を配置するために使用するスペースを埋める Canvas があります。
メインのキャンバスの SizeChanged イベントをサブスクライブし、スケール変換を適用して、コントロールのサイズが変更されたときにキャンバスとその子がズームのように縮小および拡大するようにしましたが、何らかの理由で親キャンバスが縮小しています子よりもはるかに高いレートで、スケール レートのために特定のポイントで子がキャンバスから外れます。
これは私のコードです:
private void EditorCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (e.PreviousSize.Width == 0)
return;
double YDiff = e.PreviousSize.Height / e.NewSize.Height;
double XDiff = e.PreviousSize.Width / e.NewSize.Width;
Scale.ScaleY /= YDiff;
Scale.ScaleX /= XDiff;
}
キャンバスの子は正しいレートでスケーリングしているように見え、キャンバスははるかに高いレートでスケーリングしているようです。
誰かが理由を見たり、これが起こっている理由を知っていますか?
動作の写真...小さいパネルの後ろの空白に注意してください
前
スケーリング