
我在windows 10中遇到了一个窗口定位错误(?)。 我已经在WPF中重现了这一点。 比方说,我创build一个如下窗口:
var d = new Window(); d.WIDth = 100; d.Height = 100; d.left = 1000; d.top = 100; d.windowstyle = windowstyle.None; d.ResizeMode = ResizeMode.noresize; d.Show();
我在1920×1080的分辨率,所以我希望窗口的左侧正好在1000px的中心(如在windows 8中),但事实并非如此。 通过testing(通过hover鼠标,抓取鼠标坐标以及通过使用PointToScreen进行testing),它显示窗口的X(左)位置实际上是1250,Y(顶)位置是125.所以坐标被调整了25%。 但是,如果您检查Window.left属性,它仍然说1000实际上位于1250的窗口。
我立即去窗口中寻找显示设置,我发现这个:
控制从C#应用程序的其他窗口
我可以用什么软件或服务以编程方式拨打电话?
windowssearchsql:liKE语句中的分号导致exception(E_FAIL 0x80004005)
将Visual Studio 2005 sln迁移到2008,在liB环境variables中使用vc98path警告,如何解决?
StringCollection编辑器不存储用户input的值
所以我想,如果这是罪魁祸首,这只是一个如何检测这个问题,除了我发现,即使改为100%,而不是125%,实际上没有改变 ,错误仍然是相同的。
所以有其他人遇到这个BUG,如果这是一个窗口显示设置的问题,有什么办法来检测它?
如何在windows窗体中暂停backgrounDWorker
给定一个IntPtr句柄,改变窗口的背景颜色
windows服务应用程序挂起
我如何获得所有进程的打开句柄集
SSL支持Rabbit + .Net + windows
在Cyral的帮助下,在这个问题的评论中,找到DPI是这样的:
var dpiX = (int)typeof(SystemParameters).GetProperty("DpiX",BindingFlags.NonPublic | BindingFlags.Static).GetValue(null,null); var dpiY = (int)typeof(SystemParameters).GetProperty("Dpi",null);
然后进行校正: [Desired Pixel Coordinate] * (96 / [dpi])
这是由于WPF使用DPI和虚拟像素进行布局而不是物理像素。
总结以上是内存溢出为你收集整理的win10的wpf窗口定位错误全部内容,希望文章能够帮你解决win10的wpf窗口定位错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)