C#之十八 GUI用户界面编程

134 篇文章 21 订阅
C#程序设计与宿舍管理系统实战-c#宿舍管理系统,c#管理系统-C#视频教程-后端开发-CSDN程序员研修院

        图形用户界面(GUI),即人机交互图形化用户界面设计。Windows是典型的基于图形界面方式设计的操作系统,基于此你可以用鼠标来点击按钮等操作来和应用程序进行交互,很是方便、直观。

为创建基于Windows的应用程序,需要了解GUI特性使我们对Windows应用程序有所了解。

本章我们将讨论 GUI的特点和Windows环境的特性。

重点

        了解GUI的特点及组成

        了解GUI的在当前社会中的用处

        浏览GUI在当前在哪些操作系统中用到以及历史变迁

        Windows环境的主要特性

        对于事件驱动编程的介绍

        对于动态链接的介绍

预习功课

        什么是GUI?

        GUI由何组成?

        GUI有何作用?

        Windows产生的环境?

        事件驱动编程是什么?

Ø        动态链接是什么?

GUI 简介

        图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口),是指采用图形方式显示的计算机操作用户介面,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。

        GUI 即人机交互图形化用户界面设计。纵观国际相关产业在图形化用户界面设计方面的发展现状,许多国际知名公司早已意识到 GUI 在产品方面产生的强大增值功能,以及带动的巨大市场价值,因此在公司内部设立了相关部门专门从事 GUI 的研究与设计,同业间也成立了若干机构,以互相交流 GUI 设计理论与经验为目的。随着中国 IT 产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。

与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。

GUI的特点

        GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可用用通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。

GUI组成部分

        GUI一般由桌面、视窗、标签、菜单、图标、按钮、回收站、键盘、单一文档界面、多文档界面等组成。下面将会对上面的一些常用组成部分做出相应的介绍。

桌面

        在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。在桌面上由于可以重叠显示窗口,因此可以实现多任务化。通过设置桌面背景,使视觉更加美观。

视窗

        通常在窗口四周设有菜单、图标,数据放在中央。在窗口中,根据各种数据/应用程序的内容设有标题栏,一般放在窗口的最上方,并在其中设有最大化、最小化(隐藏窗口,并非消除数据)、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行操作。

标签 :

        多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样就使用权得接入的数据方式显得更为便捷。

图标 :

显示在管理数据的应用程序中的数据,或者显示应用程序本身。

        数据管理程序,即在文件夹中用户数据的管理、进行特定数据管理的程序的情况下,数据通过图标显示出来。通常情况下显示的是数据的内容或者与数据相关联的应用程序的图案。另外,点击数据的图标,一般可以之间完成启动相关应用程序以后再显示数据本身这两个步骤的工作。

应用程序的图标只能用于启动应用程序。

回收站:一旦用户发现删除错误,还可以将其找回,从而实现防止错误删除的目的。

键盘:和命令用户界面一样,键盘在图形用户界面仍是一个重要的设备。键盘不仅可以输入数据的内容,而且可以通过各种预先设置的“快捷键”等键盘组合进行命令操作达到和菜单操作一样的效果,并极大提高工作效率。

单一文件界面 :

        在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。

多文件界面 :

        在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。

当前采用图形用户界面的操作系统/应用程序

          Smalltalk

          Mac OS

          NEXTSTEP

          Mac OS X

          Microsoft Windows

          X Window System (类UnixOS、Linux)

          BTRON

          TownsOS

          MSX-View

          SX-Window

          BeOS

          Newton OS

          Zaurus OS

          Palm OS C#是什么

          面向对象的知识

          如何配置C#环境变量

          开发自己的第一个C#控制台程序 

英语词汇

 英文                                                  中文

Graphical   User  Interface          图形用户界面

Application  Programming  Interface  应用编程接口

Single Document Interface            单一文件界面

Multiple Document Interface          多文件界面

历史变迁

1990年代早期Unix 平台上执行的 X Window System1980年 Three Rivers公司推出Perq图形工作站

1981年 施乐公司推出了Alto的继承者Star,Alto曾首次使用了窗口设计

1984年 苹果公司推出Macintosh

1986年 首款用于Unix的窗口系统X Window System发布

1988年 IBM发布OS/2 1.10标准版演示管理器(Presentation Manager),这是第一种支持Intel计算机的稳定的图形界面

1992年 微软公司发布Windows 3.1,增加了多媒体支持

1995年 微软的Windows 95发布,其视窗操作系统的外观基本定型

1996年 微软发布Bob,此软件具有动画助手和有趣的图片。

1996年 IBM发布OS/2 Warp 4,它的交互界面得到显著改善,至今仍有不少ATM机运行这样的系统

1997年 KDE和GNOME两大开源桌面项目启动

1997年 苹果公司发布MAC OS 8,这个系统具有三维外观并提供了SpringLoaded Folder功能

2000年 苹果公司漂亮的Aqua,也就是Mac OS X系统的默认外观,可以让用户更轻松地使用计算机

2001年 微软发布Windows XP,实现桌面功能的整合

2003年 Mac OS X v10.3提供了一键单击访问任何已打开窗口的功能

2003年 Sun公司的Java桌面系统为GNOME桌面添加了和Mac类似的效果

2006年 微软发布Windows Vista,对此前其视窗操作系统的外观作了较大的修改

2008年 微软发布Windows 7,对此前其视窗操作系统不仅是外观,甚至是对硬件的支持都作了较大修改,比Vista降低了对硬件的要求

Windows环境特性的简介

Windows环境的最重要特性包含事件驱动编程和动态链接,并允许应用程序与用户进行有效交互。

事件驱动编程的简介

        Windows允许用户使用鼠标执行程序。当用户单击控件时会产生一个事件,一个事件就是用户执行的一个行动。

        Windows产生消息来响应用户执行的每个事件,这些消息发送到应用程序,然后根据接收到的消息应用程序执行预定的行动。

相信大家都玩过扫雷吧!当你单击单元格时,游戏显示它周围雷的数量,此单元格就是一个事件。而在游戏过程中,如果你在一个地雷上单击,此时游戏会结束,而应用程序会显示所有的雷并且将笑脸图标改为哭脸图标,这些行动,如上面所述显示雷的个数、单击雷时显示所有雷以及将笑脸改为哭脸都是对事件的响应。

扫雷游戏界面

动态链接简介

 

动态链接(Dynamic  linking)是Windows环境中的应用程序能够在运行时链接到库函数的过程。

        在标准的C#程序中,程序调用的各种内置函数在编译时解析到一个库中。该库包含这些函数的代码。编译器确定函数需要的库并将代码从库中复制到程序,这种技术称为动态链接。(:内置函数为编程语言提供的内部函数)

(.dll扩展名代表动态链接库。)

相比于静态链接,动态链接有如下优点:

■编译的程序量更小,因为很多内置的函数定义存储在库中。

■如果更新了库,不需要重新编译程序。

■多个程序共享相同代码,减少了对内存的需求。

练习

选择题:

1、.dll扩展名代表_________

2:列举动态链接的三个优点__________、___________、____________。

小结

在本章中,我们主要学习了:

u   Windows环境的两个重要特性

u   关于事件驱动编程以及动态链接

英语词汇

英文                                                       中文

Dynamic Linkable Library                动态链接

实践项目

如上而提到的扫雷,如果有兴趣可以玩一下,可以从中更深一步的了解事件驱动编程
C#编写的GUI游戏 源代码 using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace gn { public partial class Form1 : Form { string ready; int counti = 1; public Form1() { InitializeComponent(); this.label1.Hide(); this.button2.Hide(); this.button1.Hide(); this.button3.Hide(); this.button4.Hide(); this.textBox1.Hide(); this.pictureBox1.Hide(); this.pictureBox2.Hide(); } private void button1_Click(object sender, EventArgs e) { string number; int x, y; int count = 0; number = textBox1.Text; if (number.Length != 4) { MessageBox.Show("请输入4位数字"); } else { if (counti <=8) { if (count <= 3) { x = 0; y = 0; for (int i = 0; i <= 3; i++) { for (int j = 0; j <= 3; j++) { if (number[i] == ready[j]) { if (i == j) ++x; else ++y; } } } label2.Text = "你已经猜过" + counti + "次"; ++count; label3.Text = x.ToString() + "A" + y.ToString() + "B"; if (number == ready) { this.label2.Text = "答对了"; this.pictureBox1.Show(); } } if (counti == 8) { this.button1.Enabled = false; this.pictureBox2.Show(); } } else { this.button1.Enabled = false; this.pictureBox2.Show(); } ++counti; } } private void button2_Click(object sender, EventArgs e) { MessageBox.Show(ready); } private void button3_Click(object sender, EventArgs e) { //this.button2.Hide(); this.textBox1.Text = ""; this.label3.Text = ""; this.label2.Text = ""; this.button1.Enabled = true; counti = 1; this.pictureBox1.Hide(); this.pictureBox2.Hide(); Random r = new Random(); string[] a; a = new string[8]; a[0] = "1263"; a[1] = "6598"; a[2] = "9654"; a[3] = "5986"; a[4] = "2915"; a[5] = "2046"; a[6] = "9035"; a[7] = "1057"; int z; z = r.Next(8); ready = a[z]; } private void label1_Click(object sender, EventArgs e) { } private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } private void button4_Click(object sender, EventArgs e) { Close(); } private void button5_Click(object sender, EventArgs e) { Random r = new Random(); string[] a; a = new string[8]; a[0] = "1263"; a[1] = "6598"; a[2] = "9654"; a[3] = "5986"; a[4] = "2915"; a[5] = "2046"; a[6] = "9035"; a[7] = "1057"; int z; z = r.Next(8); ready = a[z]; this.textBox1.Show(); this.button1.Show(); this.button3.Show(); this.button4.Show(); this.label1.Show(); this.button2.Show(); this.button5.Hide(); } private void label4_Click(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { } private void pictureBox1_Click(object sender, EventArgs e) { } private void pictureBox1_Click_1(object sender, EventArgs e) { } } }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teayear

读后有收获可以获取更多资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值