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,当初 ...
随机推荐
- 关闭Azure虚拟机
Press the Windows key, and then in the Start page, located at the bottom-left, click the Power butto ...
- windows7 安装pytorch
这几天为了运行python的图像转换的项目,不得不安装pytorch,安装了两天,最后把经验记录一下. 如果版本不匹配会抛出很多错误,而网上的各种解决方式有大部分也解决不了问题. 在安装pytorch ...
- android获取Context
如果在Activity方法中,直接使用this. 如果在Activity内部类中,使用Activity.this
- JPA Example 基本使用使用实例
一.相关接口方法 在继承JpaRepository接口后,自动拥有了按“实例”进行查询的诸多方法.这些方法主要在两个接口中定义,一是QueryByExampleExecutor,一个是JpaR ...
- calculate TajimaD in perl
#!/usr/bin/perl use strict; use warnings; =pod--------------------------------------- this perl scri ...
- IntelliJ常用快捷键及配置
IntelliJ常用快捷键及配置 目录: 1.常用快捷键: 2.常用配置: 1.常用快捷键: (1)psvm:创建main函数 (2)fori:for (int i = 0; i < ; i++ ...
- Spock - Document -04- Interaction Based Testing
Interaction Based Testing Peter Niederwieser, The Spock Framework TeamVersion 1.1 Interaction-based ...
- mySql 数据库中间件 atlas的使用
MySQL 中间件Atlas 实现读写分离 原创 MySQL 作者:神谕丶 时间:2016-08-05 17:07:51 2410 0 〇 Atlas架构介绍 <span "=&q ...
- 学习笔记DL001:数学符号、深度学习的概念
数学符号. 数和数组.
- 《大型网站系统与Java中间件实现》有感
头一次只用了一周的时间就看完一本书<大型网站系统与Java中间件实现>,这本书是关于设计方面的,提到了服务框架,消息中间件,数据访问层,以及如何解决应用之间的调用,解耦,以及应用和存储之间 ...