在WPF中嵌入Winform控件,大小发生改变
环境:屏幕分辨率125%
1、 这两个方法可以返回当前屏幕选择的分辨率,该分辨率是以像素为单位,在DPI为96的情况下我们可以利用它们来做一些控件的定位,因为此时WPF单位对应一个像素,而当DPI非96的情况下,用该分辨率来做定位就会发现误差了,因此此时每个WPF单位并不是对应于一个像素
var bw1 = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
var bh1 = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
1920,1080
2、这两个方法可以返回当前屏幕的宽和高,它是与设备无关的单位(1/96英寸),因此用它来做控件的定位,在DPI改变的情况下,也不会发生定位上的误差
var pw1 = SystemParameters.PrimaryScreenWidth;
var ph1 = SystemParameters.PrimaryScreenHeight;
1536,864
1920/1.25=1536
3、这两个方法可以返回当前屏幕工作区的宽和高(除去任务栏),它也是与设备无关的单位,通常我们可以结合2和3来得到任务栏的高度
var ww = SystemParameters.WorkArea.Size.Width;
var wh = SystemParameters.WorkArea.Size.Height;
1536,824
4、项目应用,在winform中添加控件,然后winform再被wpf嵌入
winform控件高度设置29,winform控件运行时高度23,嵌入wpf窗体后运行时高度39
winform控件高度设置72,winform控件运行时高度58,嵌入wpf窗体后运行时高度96
wpf控件高度设置29,运行时高度29
29->23,29/1.25=23.2≈23,29*1.34=38.86≈39
72->58,72/1.25=57.6≈58,72*1.34=96.48≈96
但是,1.34怎么来的?