首页 > 编程语言 >【C#】WPF获取屏幕分辨率

【C#】WPF获取屏幕分辨率

时间:2024-03-14 15:02:15浏览次数:18  
标签:C# 分辨率 System Windows currentGraphics using WPF MainWindow

SystemParameters提供的接口,其实是获取渲染过程中的实际高宽,是受系统DPI设置的影响。

以 1920 * 1080 和 125% DPI为例:

分辨率高度:1080,实际获取的高度为:864。 分辨率宽度:1920,实际获取的宽度为:1536。

 结果展示

代码

需要额外的包 using System.Drawing;

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp16
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            double currentGraphics = Graphics.FromHwnd(new WindowInteropHelper(Application.Current.MainWindow).Handle).DpiX / 96;
            string screenHeight = (SystemParameters.PrimaryScreenHeight* currentGraphics).ToString();
            string screenWidth = (SystemParameters.PrimaryScreenWidth * currentGraphics).ToString();
            InitializeComponent();
            textBlock.Text = screenWidth + "x" + screenHeight;
        }
    }
}

参考文献

WPF 如何正确获取屏幕分辨率 (huchengv5.github.io)

标签:C#,分辨率,System,Windows,currentGraphics,using,WPF,MainWindow
From: https://blog.csdn.net/qq_39397927/article/details/136659312

相关文章

  • MIT 6.S081入门lab6 cow
    MIT6.S081入门lab6cow由于本实验的前置课程包括2部分Interrupts和Multiprocessorsandlocking,因此本次实验记录也分为2部分一、参考资料阅读与总结1.xv6book书籍阅读(chapter5Interruptsanddevicedrivers)1.概述设备驱动程序:位置:操作系统;作用:配置设备,执行操作,处......
  • 深入C语言指针,使代码更加灵活(二)
    一、数组名的理解前面我们在使用指针访问数组内容的时候,有这样的代码:intarr[10]={1,2,3,4,5,6,7,8,9,10};int*p=&arr[0];在这里我们使用&arr[0]的方式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,而且是数组首元素的地址。我们来进行测试:#d......
  • 【AIGC调研系列】Github Copilot进行pytest自动化测试的实践经验
    GitHubCopilot可以用于pytest自动化测试的实践和使用方法。此外,Copilot可以在很多情况下仅通过注释或函数名就能实例化出完整的代码,这表明它也可以用于补充测试用例[5]。具体到pytest框架,它是一个非常容易上手的自动化测试框架,具有丰富的资料文档和第三方插件,可以自定义扩展......
  • C#try捕捉不了NullReferenceException
    用debug运行以下代码出现空指针错误double[]EnergyScaleValue=newdouble[3];try{EnergyScaleValue=null;}catch(NullReferenceExceptionee){MessageBox.Show("请先选择样品!");......
  • 服务平滑迁移:eureka迁移到nacos。无法注册双中心的问题解决
    迁移的文档:https://www.alibabacloud.com/help/zh/edas/developer-reference/smoothly-migrate-a-spring-cloud-cluster-that-contains-multiple-applications-to-edas其中遇到的问题未配置排除配置项时(exclude={RibbonEurekaAutoConfiguration.class}),ribbonServerList不是......
  • C++——智能指针
    本章代码Gitee仓库:智能指针文章目录1.为什么要有智能指针2.RAII机制3.智能指针原理4.auto_ptr(c++98)5.unique_ptr(c++11)6.shared_ptr(c++11)6.1shared_ptr线程安全问题6.2shared_ptr循环引用6.3定制删除器7.weak_ptr(c++11)8.C/C++动态内存1.......
  • 滴水逆向笔记系列-c语言总结4-15.switch语句反汇编-16.指针1-17.指针2
    第十五课c语言8switch语句初步测试感觉switch在反汇编的语句和if语句的唯一差别就是jcc语句比较集中当分支大于四条时,switch的反汇编开始变3为switch传入的值,1是case最小值,4是case最大值减1,算出偏移量后通过偏移量4加上基址就可以在大表中获取要输出的case语句的地址当现在case......
  • 滴水逆向笔记系列-c语言总结5-
    第十八课c语言11字符串与数组这一节课b站缺失了,参考一下大佬的笔记学习,链接:https://blog.csdn.net/Edimade/article/details/124446533?spm=1001.2014.3001.55021.字符数组:::infochararr[10]={'A','B','C','D','E','F'};//编译器默认在结尾添加......
  • 近屿智能成功完成A轮融资,打造独家AIGC工程师与产品经理学习路径图引发热议
    近屿智能OJAC的发展历程与行业实力在2024年1月,上海近屿智能科技有限公司(简称近屿智能)宣布成功完成A轮融资。智望资本作为领头投资者,金沙江创投也参与了增资。这一里程碑事件不仅突显了近屿智能在人力资源技术领域的领先地位,也显示了投资者对其技术实力和市场前景的坚定信心。作......
  • IIC的使用
    IIC特点主从通信高速IIC总线一般可达400kbps以上,用于低速设备通信传输距离短,一般设计PCB板时,外设嵌入pcb半双工通信,同一时间只能单项通信,任意时刻只能有一个主机IIC总线上可连接128个设备,但0x00地址不使用,因此127个设备,但实际设计情况,建议不超过8个,因为总线电容不能超过400......