我有一個WPF控件停靠在WinForms應用程序的WPF主機控件中。 WPF控件設置爲水平和垂直拉伸,並且主控件停靠在錨定組框中。ScaleTransform在畫布上調整縮小畫布的速度高於兒童
我的WPF控件有一個Canvas,它填充了我用來放置從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;
}
畫布的孩子們似乎在正確率進行縮放,並在畫布上似乎以高得多的速度進行縮放。
有沒有人看到任何理由/知道爲什麼會發生這種情況?行爲
圖片...請注意較小的面板
後面的空格前
縮放
發佈解釋問題的截圖。 – 2013-03-11 17:33:10
你在哪裏應用ScaleTransform?它至少不應該應用於該Canvas本身,因爲在SizeChanged事件觸發時已經改變了大小。 – Clemens 2013-03-11 17:46:13
這可能是問題所在。 ScaleTransform應用於整個畫布上的SizeChanged事件。我會更多地考慮這一點。 – Gianni 2013-03-11 17:52:21