博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF 获取屏幕分辨率(获取最大宽高)等
阅读量:5068 次
发布时间:2019-06-12

本文共 2267 字,大约阅读时间需要 7 分钟。

double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度double y = SystemParameters.WorkArea.Height;//得到屏幕工作区域高度double x1= SystemParameters.PrimaryScreenWidth;//得到屏幕整体宽度double y1 = SystemParameters.PrimaryScreenHeight;//得到屏幕整体高度this.Width = x1;//设置窗体宽度this.Height = y1;//设置窗体高度

C# 根据不同屏幕分辨率自动适应屏幕

C# 根据不同屏幕分辨率自动适应屏幕
------解决方案--------------------------------------------------------
使用 TableLayoutPanel 布局 + 设置 Dock Anchor 属性。 
------解决方案--------------------------------------------------------
如果只是组件位置的话,可以设置dock和anchor等
如果是还有其他特殊要求,就要自己根据实际分辨率来计算一些属性了 
------解决方案--------------------------------------------------------
窗体的windowstate设置为maximized,载入的时候自动铺满屏幕。
如果想做其他操作的话Rectangle rect = System.Windows.Forms.SystemInformation.VirtualScreen;
屏幕宽度=rect.width,高度=rect.height

 

据WPF外包小编了解,通常,不需要在屏幕上明确定位窗口。而是简单地将WindowState属性设置为Normal,并忽略其他所有细节。另一方面,很少会将WindowStartupLocation属性设置为Manual,并使用Left属性和Right属性明确设置窗口的位置。

 

有时需要更加关注为窗口选择位置和尺寸。例如,如果创建的窗口太大而不能使用低分辨率显示器就会遇到麻烦。如果使用一个单窗口应用程序,最好的解决方法是创建可以改变尺寸的窗口。如果使用具有几个浮动窗口的应用程序,问题就没有这么简单了。

 

据WPF外包公司小编了解,可以限制窗口的尺寸使其支持最小的显示器,但是这会让高端用户感到沮丧(它们为了在屏幕上一次显示更多的信息,专门购买更好的显示器)。对于这种情况,通常希望在运行时决定窗口的最佳位置。为此,需要使用System.Windows.SystemParameters类来检索有关屏幕真实状态的基本信息。

 

SystemParameters类包含一些静态属性,从中可以得到各种有关系统设置的信息。例如,可以使用SystemParameters类来决定用户是否启用了热跟踪(hot tracking)、拖动时显示窗口内容选项,以及其他选项。对于窗口,SystemParameters类特别有用,因为它提供的两个属性可以给出当前屏幕的分辨率:

 

FullPrimaryScreenHeight属性和FullPrimaryScreenWidth属性。这两个属性都非常简单,下面是一些(在运行时将窗口定位在屏幕中央的)演示代码:

double screeHeight = SystemParameters.FullPrimaryScreenHeight;double screeWidth = SystemParameters.FullPrimaryScreenWidth;this.Top = (screenHeight - this.Height) / 2;this.Left = (screenWidth - this.Width) / 2;

 

 

据WPF外包专家了解,尽管使用这些代码和将窗口的WindowState属性设置为CenterScreen效果是相同的,但是使用代码具有实现不同定位逻辑的灵活性,并且可以在合适的时间执行这些定位逻辑。

更好的选择是使用SystemParameters.WorkArea矩形,使窗口位于可用屏幕区域的中央。工作区域不包括停靠任务栏(以及其他停靠到桌面的工具条)的区域。

double workHeight = SystemParameters.WorkArea.Height;double workWidth = SystemParameters.WorkArea.Width;this.Top = (workHeight - this.Height) / 2;this.Left = (workWidth - this.Width) / 2;

 

注意:

这两个示例代码都存在一个小缺点。当为窗口设置Top属性时,窗口已经是可见的了,并且窗口会被立即移动和刷新。当使用后面一行代码设置Left属性时会发生同样的过程。因此,视觉敏锐的用户会看到两次窗口移动。遗憾的是,Window类没有提供一个方法同时设置这两个位置属性。唯一的解决方法是在窗口创建之后还未通过调用Show( )方法或ShowDialog( )方法显示之前定位窗口。

转载于:https://www.cnblogs.com/DreamRecorder/p/9485328.html

你可能感兴趣的文章
IOS-objectForKey与valueForKey在NSDictionary中的差异
查看>>
本地推送通知在iOS8上的不同
查看>>
五种线程池的分类和作用
查看>>
【Codeforces】894D. Ralph And His Tour in Binary Country 思维+二分
查看>>
BZOJ1212
查看>>
MYSQL双机热备份的配置实施(问题总结)
查看>>
[转]Java实现定时任务的三种方法
查看>>
div层的滑入滑出实例
查看>>
Welcome to LED Control Wiki
查看>>
不能恢复ipod发生未知错误1439
查看>>
Hibernate批量处理数据、HQL连接查询
查看>>
iOS:多个单元格的删除(方法二):
查看>>
Write a program that prints its input one word per line.
查看>>
Socket编程实践(10) --select的限制与poll的使用
查看>>
Qt之QLineEdit
查看>>
MySQL-主 键
查看>>
如何开启firebug显示注释?
查看>>
SyntaxError: missing ; before statement 错误的解决
查看>>
PHPmailer关于Extension missing: openssl报错的解决
查看>>
数据库索引设计
查看>>