C#对屏幕分辨率的操作
winform应用程序
1.新建Resolution.cs类
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices; namespace ScreenResolution
{
public class Resolution
{
public int autoWidth = Screen.PrimaryScreen.Bounds.Width;
public int autoHeight = Screen.PrimaryScreen.Bounds.Height; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = )]
public string dmDeviceName; public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = )]
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;
} // 平台调用的申明
[DllImport("user32.dll")]
public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE devMode);
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettings(ref DEVMODE devMode, int flags); // 控制改变屏幕分辨率的常量
public const int ENUM_CURRENT_SETTINGS = -;
public const int CDS_UPDATEREGISTRY = 0x01;
public const int CDS_TEST = 0x02;
public const int DISP_CHANGE_SUCCESSFUL = ;
public const int DISP_CHANGE_RESTART = ;
public const int DISP_CHANGE_FAILED = -; // 控制改变方向的常量定义
public const int DMDO_DEFAULT = ;
public const int DMDO_90 = ;
public const int DMDO_180 = ;
public const int DMDO_270 = ; /// <summary>
/// 修改屏幕分辨率
/// </summary>
/// <param name="width">屏幕宽度</param>
/// <param name="height">屏幕高度</param>
public void ChangeResolution(int width, int height)
{
// 初始化 DEVMODE结构
DEVMODE devmode = new DEVMODE();
devmode.dmDeviceName = new String(new char[]);
devmode.dmFormName = new String(new char[]);
devmode.dmSize = (short)Marshal.SizeOf(devmode); if (EnumDisplaySettings(null, ENUM_CURRENT_SETTINGS, ref devmode) != )
{
devmode.dmPelsWidth = width;
devmode.dmPelsHeight = height; // 改变屏幕分辨率
int iRet = ChangeDisplaySettings(ref devmode, CDS_TEST); if (iRet == DISP_CHANGE_FAILED)
{
MessageBox.Show("不能执行你的请求", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
iRet = ChangeDisplaySettings(ref devmode, CDS_UPDATEREGISTRY); switch (iRet)
{
// 成功改变
case DISP_CHANGE_SUCCESSFUL:
{
break;
}
case DISP_CHANGE_RESTART:
{
MessageBox.Show("你需要重新启动电脑设置才能生效", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
default:
{
MessageBox.Show("改变屏幕分辨率失败", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
}
}
}
}
}
}
2.创建窗体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace ScreenResolution
{
public partial class Form1 : Form
{
Resolution reso;
public Form1()
{
InitializeComponent();
reso = new Resolution();
} /// <summary>
/// 修改分辨率
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
int width = Convert.ToInt32(this.comboBox1.SelectedItem.ToString().Split('*')[]);
int height = Convert.ToInt32(this.comboBox1.SelectedItem.ToString().Split('*')[]);
reso.ChangeResolution(width, height);
} /// <summary>
/// 还原分辨率
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
reso.ChangeResolution(reso.autoWidth,reso.autoHeight);
}
}
}
3.启动测试(选择一项,点击修改分辨率。亲测有效,可还原)

C#对屏幕分辨率的操作的更多相关文章
- winform 自适应屏幕分辨率具体操作和注意事项
第一步:先借助一个类文件 AutoSizeFormClass.cs class AutoSizeFormClass { public struct controlRect { public int L ...
- 在VirtualBox中安装了Ubuntu后,Ubuntu的屏幕分辨率非常小,操作非常不便。通过安装VirtualBox提供的“增强功能组件”,-摘自网络
在VirtualBox中安装了Ubuntu后,Ubuntu的屏幕分辨率非常小,操作非常不便.通过安装VirtualBox提供的“增强功能组件”,可以解决这一问题,并且使用非常方便. 一.环境 | En ...
- WPF 获取屏幕分辨率(获取最大宽高)等
double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度 double y = SystemParameters.WorkArea.Height; ...
- Ubuntu16.04调整屏幕分辨率至1920*1080
安装好ubuntu 16.04桌面版后,发现屏幕分辨率调整选项里没有1920*1080这一选项,经过一番查找,可通过如下方式进行屏幕分辨率设置.以下操作均在ubuntu 16.04桌面版操作,不要用远 ...
- Ubuntu 更改屏幕分辨率
安装完Ubuntu后发现分辨率不合适,平时习惯了看小一点的文字,所以搜了一下修改屏幕分辨率的命令,具体操作如下: 1.先用 xrandr 命令查看一下当前系统支持的分辨率 wayde@wayde-Al ...
- WPFの获取屏幕分辨率并自适应
double x = SystemParameters.WorkArea.Width;//得到屏幕工作区域宽度 double y = SystemParameters.WorkArea.Height; ...
- centos 7 修改系统屏幕分辨率
centos 7 修改系统屏幕分辨率,命令方式和图形方式的修改方法. 命令:xrandr 通过命令 xrandr 修改系统的分辨率,输入xrandr: bash [admin@localhost ~] ...
- 07、在 Windows10 上获得屏幕分辨率
因为在 win10 上,app 在运行的时候,默认不是占满全屏幕,并且 windows runtime 当前没有提供获取 屏幕尺寸的 api.在桌面 win32 api 中,可以获取屏幕尺寸,不过因为 ...
- 【扫盲贴】为什么屏幕分辨率是 640x480
本文原地址:http://www.easyx.cn/skills/View.aspx?id=172 常见的屏幕分辨率很奇怪,为什么总用一些不零不整的数字?比如以前最常见的分辨率是 640x480,当初 ...
随机推荐
- UI中的Rect Transform
RectTransform 是 Transform 的 2D 对应 Component. Transform 表示单个点,Rect Transform 表示一个2D矩形(UI空间),如果父子物体都有R ...
- ffmpeg推送直播流的技术进展
首先安装好NGINX并打开服务 然后安装好ffmpeg 然后参考:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=2879051 ...
- 【EMV L2】Processing Restrictions
目的: 处理限制(Processing Restrictions)的目的是确定终端中的应用程序与ICC中的应用程序的兼容程度,并进行任何必要的调整,包括可能拒绝交易. 执行条件: 终端应该都要执行Pr ...
- 【Keil5 MDK】fromelf工具的基本用法(fromelf --help)
ARM FromELF, 5.03 [Build 76] [MDK-ARM Standard] ARM image conversion utilityfromelf [options] input_ ...
- ECDSA host key for 192.168.0.101 has changed and you have requested strict checking.
原文地址:http://blog.csdn.net/ausboyue/article/details/52775281 Linux SSH命令错误:ECDSA host key "ip地址& ...
- Egret_时间与运行
1.加载资源 2.将显示对象添加到显示列表 /////////////*****************************动态帧频******************************** ...
- C#取出重复的方式以及用字典存储以键存储集合的方法
最近在做项目的时候,发现有些需求需要特别的方式来实现.下面看代码 private List<string> firstType = new List<string>(); pr ...
- L1-046 整除光棍
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除.比如,111111就可以被13整除. 现在,你的程序 ...
- Appium环境搭建——安卓模拟器(AVD)调试 1-创建模拟器失败点的总结
一.先安装好Android SDK 系统变量—>新建,变量名:ANDROID_HOME,变量值:SDK的安装路径 系统变量—>path—>点击编辑,变量值添加:;%ANDROID_H ...
- c/c++的常用函数和STL使用
一个超好用的c++网站:http://www.cplusplus.com/reference/string/string/erase/ 一.函数头中包含的函数 1.qsort函数对数组.结构体等进行排 ...