C++程序设计:原理与实践(进阶篇)17.3 第一个例子-阿里云开发者社区

开发者社区> 华章出版社> 正文

C++程序设计:原理与实践(进阶篇)17.3 第一个例子

简介:

17.3 第一个例子


我们的目标是定义一些类,能够用来创建可以在屏幕上显示的对象。例如,我们希望绘制一个由一系列相连的线构成的图形,下面程序给出了一个非常简单的版本:

 

运行该程序,屏幕显示如下。

 

我们来逐行分析这个程序,看看它做了什么。它首先包含图形接口库的头文件:

 

接着,在main()函数的开始处告知编译器在Graph_lib中查找图形工具:

 

然后,定义一个点作为窗口的左上角:

 

接下来在屏幕上创建一个窗口:

 

我们使用Graph_lib接口库中一个名为Simple_window的类表示窗口,此处定义了一个名为win的Simple_window对象,即win是Simple_window类的变量。初始化列表中的值将窗口win的左上角设置为tl,宽度和高度分别设置为600像素和400像素。我们随后会介绍更多细节,但此处的关键点就是通过给定宽度和高度来定义一个矩形。字符串Canvas用于标识该窗口,你可以在窗口框左上角的位置看到Canvas字样。

接下来,我们在窗口中放置一个对象:

 

我们定义了一个多边形对象poly,并向其添加顶点。在我们的图形库中,一个Polygon对象开始为空,可以向其中添加任意多个顶点。由于我们添加了三个顶点,因此得到了一个三角形。一个点是一个值对,给出了点在窗口内的x和y(水平和垂直)坐标。

纯粹是为了展示图形库的功能,我们接下来将多边形的边染为红色:

 

最后,我们将poly添加到窗口win:

 

如果程序执行得不是那么快的话,你会注意到,到现在为止,屏幕上没有任何显示,是的,什么都没有。我们创建了一个窗口(确切地说,是Simple_window类的一个对象),创建了一个多边形(名为poly)并将其染为红色(Color::red),最后将其添加到窗口(名为win),但我们还没有要求在屏幕上显示此窗口。显示操作由程序的最后一行代码来完成:

 

为了让GUI系统在屏幕上显示一个对象,你必须将控制权交给“系统”。wait_for_button()就是完成这个功能,另外,它还等待用户按下(点击)窗口中的“Next”按钮,以便执行下面的程序。这样,在程序结束和窗口消失之前,你就有机会看到窗口中的内容。当你按下按钮后,程序会结束,关闭该窗口。

单独地看这个窗口,效果如下图所示:

 

你可能注意到,我们小小地“作弊”了一下。标记为“Next”的按钮是从哪里来的?实际上它是Simple_window类内置的。在第21章中,我们将会从Simple_window类过渡到“普通”的Window类,它不包含任何可能造成混淆的内置功能。那时,我们还会介绍如何编写代码来控制与窗口的交互。

在接下来的三章里,当希望逐阶段(一帧一帧)地显示信息时,我们将简单地使用“Next”按钮来实现显示画面的转换。

对于操作系统为每个窗口添加窗口框(frame),你应该非常熟悉了,但可能没有特别留意过。不过,本章和后面章节中的图片都是在微软Windows系统下生成的,因此你“免费”得到了窗口框右上角的三个常用按钮。这些按钮是很有用的:如果你的程序变得杂乱无章(在调试过程中确实有可能出现这种情况),可以点击×按钮结束程序。当你在其他系统上运行程序时,根据系统惯例的不同,添加的窗口框也可能有所不同。在上面的示例程序中,我们对窗口框所做的仅仅是设置了一个标签(即Canvas)。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接