c#获取屏幕分辨率信息

转自:http://blog.sina.com.cn/s/blog_4c83c6bf010008zj.html

引用:http://technet.microsoft.com/zh-cn/magazine/system.windows.forms.screen.primaryscreen(VS.80).aspx

   http://msdn.microsoft.com/zh-cn/library/vstudio/system.windows.forms.screen.aspx

本文描述了一个获取及显示屏幕分辨率信息的简单方法。图1演示了使用System.Windows.Forms.Screen类可以获取的一些信息。利用这个类可以很容易地捕获到屏幕分辨率信息,但要改变屏幕分辨率仍需依靠调用API来实现。当然,改变用户的屏幕分辨率究竟是不是一个好主意还是有争议的,但在有些情况下仍是必需的(例如,要正确地显示某些图形)。
 
获取屏幕分辨率信息
图1  显示屏幕相关信息
 
  该项目没有使用除默认引用外的其它引用,解决方案中只有一个主窗体和一个程序文件。

  这个程序只包含一个窗体,窗体中有一组文本框,文件框的内容是在窗体加载时准备好的。文本框用来显示设备名称、屏幕边界、设备是否是主显示器、显示器的工作区、以及与当前显示器设置关联的像素位值。

  具体实现步骤:
 
  1.  启动Visual Studio 2005,新建一个C# Windows应用程序项目。名称为“ScreenInfo”。

  2.  设置窗体Form1的(Name)属性为“frmMain”,Text属性为“屏幕信息”。
 
  3.  向窗体中添加一个GroupBox控件,设置其(Name)属性为“gbxScreen”,Text属性为“主屏幕信息”。

  4.  向窗体中拖放5个Label控件,设置其Text属性分别为“设备名称:”、“设备边界:”、“是否主设备:”、“工作区:”、“每象素位数:”。

  5.  再向窗体中拖放5个TextBox控件,设置其(Name)属性分别为:txtName、txtBounds、txtType、txtWorkArea、txtBitsPerPixel。

  6.  再向窗体中添加一个Button控件,设置其(Name)属性为“btnOK”,Text属性为“确定”。

  调整窗体和各个控件的大小及位置,以适合窗口。

  关于屏幕的信息是通过使用System.Windows.Forms.Screen类获取的。Screen类表示单个系统上的一个或多个显示设备,常用的属性有:
 
  · PrimaryScreen 属性:获取主显示设备。
    对于单显示系统来说,主显示是唯一的显示设备。

  · Bounds 属性:获取屏幕的边界。属性值是一个Rectangle结构的值。

  · DeviceName 属性:获取与显示关联的设备名称。

  · Primary 属性:获取一个值,该值指示某个显示是否为主设备。
    如果此显示是主显示,则为 true;否则为 false。

  · WorkingArea 属性:获取显示器的工作区。
   属性值是一个Rectangle结构的值。工作区是显示器的桌面区域,不包括任务栏、停靠窗口和停靠工具栏。

  · BitsPerPixel 属性:获取与数据的一个像素相关联的内存位数。
    在处理位图时,屏幕的每个像素的位数很有用。

  代码非常简单,如下所示:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace ScreenInfo

{

    public partial class frmMain : Form

    {

        public frmMain()

        {

            InitializeComponent();

        }

 

        private void frmMain_Load(object sender, EventArgs e)

        {

            System.Windows.Forms.Screen scr = System.Windows.Forms.Screen.PrimaryScreen;

            txtBitsPerPixel.Text = scr.BitsPerPixel.ToString();

            txtBounds.Text = scr.Bounds.ToString();

            txtName.Text = scr.DeviceName.ToString();

            txtType.Text = scr.Primary.ToString();

            txtWorkArea.Text = scr.WorkingArea.ToString();

        }

 

        private void btnOK_Click(object sender, EventArgs e)

        {

            Application.Exit();

        }

    }

}

 

  当窗体加载时,会创建System.Windows.Forms.Screen类的一个实例作为主屏幕。Screen对象创建后,其属性值用来设置窗体中文本框中显示的值。

posted @ 2014-05-13 14:33  六镇2012  阅读(3218)  评论(0编辑  收藏  举报