在WPF中嵌入Winform控件,大小发生改变

在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怎么来的?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

目标Web3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值