日期:2014-05-18  浏览次数:21270 次

C#程序中怎么修改屏幕的分辨率
C#程序中怎么修改屏幕的分辨率,哪位高手能解答下!

------解决方案--------------------
C# code

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 
namespace 解决分辨率 
{ 
    public partial class Form1 : Form 
    { 
        //保存当前屏幕分辨率 
        int i = Screen.PrimaryScreen.Bounds.Width; 
        int j = Screen.PrimaryScreen.Bounds.Height; 
        public Form1() 
        { 
            InitializeComponent(); 
        } 
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 
        public struct DEVMODE 
        { 
            [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 int dmBitsPerPel; 
            public int dmPelsWidth; 
            public int dmPelsHeight; 
            public int dmDisplayFlags; 
            public int dmDisplayFrequency; 
        } 
        [DllImport("user32.dll", CharSet = CharSet.Auto)] 
        static extern int ChangeDisplaySettings([In] ref DEVMODE lpDevMode, int dwFlags); 
        [DllImport("user32.dll", CharSet = CharSet.Auto)] 
        static extern bool EnumDisplaySettings(string lpszDeviceName, Int32 iModeNum, ref DEVMODE lpDevMode); 
        void ChangeRes() 
        { 

            DEVMODE DevM = new DEVMODE(); 
            DevM.dmSize = (short)Marshal.SizeOf(typeof(DEVMODE)); 
            bool mybool; 
            mybool = EnumDisplaySettings(null, 0, ref DevM); 
            DevM.dmPelsWidth = 1024;//宽 
            DevM.dmPelsHeight = 768;//高 
            DevM.dmDisplayFrequency = 60;//刷新频率 
            DevM.dmBitsPerPel = 32;//颜色象素 
            long result = ChangeDisplaySettings(ref DevM, 0); 
        } 
        void FuYuan() 
        { 
            DEVMODE DevM = new DEVMODE(); 
            DevM.dmSize = (short)Marshal.SizeOf(typeof(DEVMODE)); 
            bool mybool; 
            mybool = EnumDisplaySettings(null, 0, ref DevM); 
            DevM.dmPelsWidth = i;//恢复宽 
            DevM.dmPelsHeight =j;//恢复高 
            DevM.dmDisplayFrequency = 60;//刷新频率 
            DevM.dmBitsPerPel = 32;//颜色象素 
            long result = ChangeDisplaySettings(ref DevM, 0); 
        } 
        private void Form1_Load(object sender, EventArgs e) 
        { 
            ChangeRes(); 
        } 

        private void button1_Click(object sender, EventArgs e) 
        { 
            FuYuan(); 
            this.Close(); 
          
        }