C# 动态调整分辨率
找了很久都没找到相关方法,在这里记录一下。
1、获取当前电脑分辨率:
int SH = Screen.PrimaryScreen.Bounds.Height;//分辨率高度int SW = Screen.PrimaryScreen.Bounds.Width;//分辨率宽度
2、修改屏幕分辨率:
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential)]
public struct DEVMODE1
{[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)] public string dmDeviceName;public short dmSpecVersion;public short dmDriverVersion;public short dmSize;public short dmDriverExtra;public int dmFields;public short dmOrientation;public short dmPaperSize;public short dmPaperLength;public short dmPaperWidth;public short dmScale;public short dmCopies;public short dmDefaultSource;public short dmPrintQuality;public short dmColor;public short dmDuplex;public short dmYResolution;public short dmTTOption;public short dmCollate;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmFormName;public short dmLogPixels;public short dmBitsPerPel;public int dmPelsWidth;public int dmPelsHeight;public int dmDisplayFlags;public int dmDisplayFrequency;public int dmICMMethod;public int dmICMIntent;public int dmMediaType;public int dmDitherType;public int dmReserved1;public int dmReserved2;public int dmPanningWidth;public int dmPanningHeight;
};class User_32
{[DllImport("user32.dll")]public static extern int EnumDisplaySettings (string deviceName, int modeNum, ref DEVMODE1 devMode );[DllImport("user32.dll")]public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags);public const int ENUM_CURRENT_SETTINGS = -1;public const int CDS_UPDATEREGISTRY = 0x01;public const int CDS_TEST = 0x02;public const int DISP_CHANGE_SUCCESSFUL = 0;public const int DISP_CHANGE_RESTART = 1;public const int DISP_CHANGE_FAILED = -1;
}namespace Resolution
{class CResolution{public CResolution() {}public CResolution(int a,int b){int iWidth =a;int iHeight =b;DEVMODE1 dm = new DEVMODE1();dm.dmDeviceName = new String (new char[32]);dm.dmFormName = new String (new char[32]);dm.dmSize = (short)Marshal.SizeOf (dm);if (0 != User_32.EnumDisplaySettings (null, User_32.ENUM_CURRENT_SETTINGS, ref dm)){dm.dmPelsWidth = iWidth;dm.dmPelsHeight = iHeight;int iRet = User_32.ChangeDisplaySettings (ref dm, User_32.CDS_TEST);if (iRet == User_32.DISP_CHANGE_FAILED){MessageBox.Show("Unable to process your request");MessageBox.Show("Description: Unable To Process Your Request. Sorry For This Inconvenience.","Information",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{iRet = User_32.ChangeDisplaySettings (ref dm, User_32.CDS_UPDATEREGISTRY);switch (iRet) {case User_32.DISP_CHANGE_SUCCESSFUL:{break;//successfull change}case User_32.DISP_CHANGE_RESTART:{MessageBox.Show("警告: 分辨率重启成功,重启电脑后生效","Information",MessageBoxButtons.OK,MessageBoxIcon.Information);break;//windows 9x series you have to restart}default:{MessageBox.Show("失败: 自动分辨率修改失败,请您手动调整电脑分辨率","Information",MessageBoxButtons.OK,MessageBoxIcon.Information);break;//failed to change}}}}}}
}
调用方法: Resolution.CResolution ChangeRes = new Resolution.CResolution(powerwidth, powerHeight);
3、获取电脑所有分辨率:(写了个去重,hs 里面就是去重后的)
DEVMODE1 vDevMode = new DEVMODE1();HashSet<string> hs = new HashSet<string>();int i = 0;while (User_32.EnumDisplaySettings(null, i, ref vDevMode) != 0){hs.Add(vDevMode.dmPelsWidth.ToString()+"*"+ vDevMode.dmPelsHeight.ToString());i++;}foreach (String de in hs){Console.WriteLine("Width:{0} ", de.ToString());}
C# 动态调整分辨率相关推荐
- kde调整分辨率_7个很酷的KDE调整将改变您的生活
kde调整分辨率 KDE的Plasma台式机最棒的是它对于任何人都足够熟悉,而且还拥有成为高级用户所需的所有旋钮和开关. 这里无法涵盖可定制桌面环境中所有可用的出色选项,但是这七个调整可以使您的Pla ...
- iOS学习之路十三(动态调整UITableViewCell的高度)
大概你第一眼看来,动态调整高度是一件不容易的事情,而且打算解决它的第一个想法往往是不正确的.在这篇文章中我将展示如何使图表单元格的高度能根据里面文本内容来动态改变,同时又不必子类化UITableVie ...
- python可视化脉搏和血氧数据并通过阈值动态调整、动态可视化异常值
python可视化脉搏和血氧数据并通过阈值动态调整.动态可视化异常值的情况 # 导入基础库和包: import sys import os import pandas as pd import num ...
- UITableViewHeader 动态调整高度
首先,标题党一枚,UITableViewHeader 是没有办法动态调整 But,我们可以通过重新赋值 Header 来达到动态调整的效果 示例 需求:header包含一个动态文本标签,具体内容多少可 ...
- Ubuntu18.04下无法进入图形界面、无法调整分辨率、无法重装显卡驱动问题的解决方式
Ubuntu18.04下无法进入图形界面.无法调整分辨率.无法重装显卡驱动问题的解决方式 参考文章: (1)Ubuntu18.04下无法进入图形界面.无法调整分辨率.无法重装显卡驱动问题的解决方式 ( ...
- 让tableView的高度等于contentSize的高度、动态调整tableView的高度、tableView的高度自适应布局...
文章概要: 1.简介下,tableView中的内容如何高度自适应的布局 2.如何做到让tableView的高度动态调整 还是看图作文吧- 首先,tableView的高度就是用户能够看见里面更大世界的那 ...
- vba动态二维数组_VBA实战技巧05: 动态调整数组以存储所需数据
学习Excel技术,关注微信公众号: excelperfect 数组是一种常用的数据结构,可用来存储一组相同类型的数据,你可以将一个数组变量视为一个迷你的电子表格,通过引用数组中的位置来存储或者获取数 ...
- 分布式作业 Elastic Job 如何动态调整
转载自 分布式作业 Elastic Job 如何动态调整 前面分享了两篇分布式作业调度框架 Elastic Job 的介绍及应用实战. ElasticJob-分布式作业调度神器 分布式作业 Ela ...
- 动态调整canvas时的问题
动态调整canvas大小时必须重新获取上下文( canvas.getContext('2d') )及重新设置ctx的属性,否则会导致后续的绘制操作无效 动态调整canvas: var canvas = ...
最新文章
- 在vmware的Solaris虚拟机中安装vmtool
- jinja2的url_for 和数据块
- 关于word插入特殊符号不显示的问题及解决
- 阿里云-AliRepo
- [USACO1.3]号码锁 Combination Lock
- Android复习05【网络编程---WebView获取文章信息、保存用户名与密码、设置菜单样式、收藏文章列表】
- 乐兔淘购物分享2.4版本功能无限制 界面够美观时尚
- CentOS7安装oracle11G数据库
- [导入]如何使得按确定和取消按纽转到两个不同的页面!
- 树莓派连接usb手机_树莓派03 - 树莓派的VNC连接
- 在 ML2 中配置 Vlan Network- 每天5分钟玩转 OpenStack(93)
- 大厂面试常问的机器学习,计算机视觉怎么学?详细指南来了!
- 各种水龙头拆卸图解_扭力扳手使用方法图解与注意事项、原理、种类
- fork,你拿什么证明你的写时拷贝(COW)
- 香蕉树上第四根芭蕉——c++中容器的概念说明---转载记录
- 基于宏指令下的威纶通配方功能(RW位控制)
- MySQL工作有多努力--了解MySQL Threads Running
- 深入探索REST(1):如何设计好的RESTful API?
- 2021年G2电站锅炉司炉最新解析及G2电站锅炉司炉找解析
- 整理全菜30篇学习vue和脚手架的笔记
热门文章
- 一文openpose姿态估计
- 越狱苹果手机导出网易云音乐歌曲(以及缓存文件转换)
- python话圣诞树_python画圣诞树
- Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering 论文阅读
- k8s使用的iptables,具体原理是什么?一学就会
- [渝粤教育] 西南科技大学 中国当代文学 在线考试复习资料
- static Constant expression contains invalid operat
- 基于滴滴云搭建安全稳定的 Memcached 服务器
- websocket+cdn架构部署
- 大学计算机课算绩点吗,大学体育成绩算入绩点吗?