18.9 Rectangle

在屏幕上最常见的形状是矩形,部分是因为文化(大多数门、窗、照片、墙、书柜、页等都是矩形的),部分是因为技术(保证坐标位于矩形空间内,比任何其他形状都简单)。无论如何,矩形是如此常见,因而GUI系统直接支持矩形,而不是把它们当作四个角都是直角的多边形。

使用两个顶点(左上角和右下角),或者一个顶点(左上角)和宽度、高度就可以定义矩形。构造函数可以定义如下:

每个构造函数都会恰当地对成员变量h和w进行初始化(使用成员初始化语法,见9.4.4节),并将矩形左上角点保存在Rectangle的基类Shape中(使用add())。此外,还进行了完整性检查:我们当然不希望Rectangle的高度和宽度是负数。

一些图形/GUI系统对矩形特殊对待的原因之一是,判断哪些像素位于矩形内部的算法要比Polygon和Circle等其他形状简单得多,因而也快得多。因此,对于矩形,“填充”操作——也就是将区域内的像素设置为指定颜色的操作很常用,而其他形状则较少应用这个操作。我们可以在构造函数中设定填充颜色,或者用set_fill_color()函数进行设定(Shape类提供的颜色相关的操作之一):

运行结果为:

当不设定填充颜色时,矩形是透明的,这也是为什么在上图中你可以看到黄色矩形rect00的一角。 ...

Get C++程序设计:原理与实践(进阶篇)(原书第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.