Программирование. Принципы и практика использования C++ Исправленное издание, стр. 173

12.7.10. И многое другое

Приведем без объяснений еще один фрагмент кода

Circle c(Point(100,200),50);

Ellipse e(Point(100,200), 75,25);

e.set_color(Color::dark_red);

Mark m(Point(100,200),'x');

ostringstream oss;

oss << "screen size: " << x_max() << "*" << y_max()

    << "; window size: " << win.x_max() << "*" << win.y_max();

Text sizes(Point(100,20),oss.str());

Image cal(Point(225,225),"snow_cpp.gif"); // 320×240 пикселей,

                                          // формат gif

cal.set_mask(Point(40,40),200,150);       // отобразить рисунок

                                          // в центре

win.attach(c);

win.attach(m);

win.attach(e);

win.attach(sizes);

win.attach(cal);

win.set_label("Canvas #12");

win.wait_for_button();

Можете ли вы догадаться, что делает этот фрагмент?

Программирование. Принципы и практика использования C++ Исправленное издание - _116.png

 

Программирование. Принципы и практика использования C++ Исправленное издание - _001.png
 Между кодом и тем, что появляется на экране, существует прямая связь. Даже если вам пока непонятно, как этот код приводит к таким результатам, то вскоре все станет ясно. Обратите внимание на то, что для форматирования текстовых объектов, содержащих информацию о размерах, мы использовали поток
istringstream
(см. раздел 11.4). 

12.8. Запуск программы

Мы показали, как можно создать окно и нарисовать в нем разные фигуры. В следующих главах мы покажем, как определен класс

Shape
и его подклассы, а также как их использовать.

Для того чтобы выполнить эту программу, требуется больше, чем для других программ, описанных ранее. Помимо кода в функции

main()
, нам необходимо скомпилировать код интерфейсной библиотеки и связать его с нашей программой, но даже в этом случае программа не будет работать, пока на компьютере не будет установлена библиотека FLTK (или другая система графического пользовательского интерфейса).

Итак, можно сказать, что наша программа состоит из четырех частей.

• Код нашей программы (

main()
и т.д.).

• Наша интерфейсная библиотека (

Window
,
Shape
,
Polygon
и т.д.).

• Библиотека FLTK.

• Стандартная библиотека языка C++.

Кроме того, мы неявно используем операционную систему. Оставляя в стороне операционную систему и стандартную библиотеку, мы можем проиллюстрировать организацию графической программы следующим образом.

Программирование. Принципы и практика использования C++ Исправленное издание - _117.png

Как заставить эту программу работать, объясняется в приложении Г.

12.8.1. Исходные файлы

Наша библиотека графики и графического пользовательского интерфейса состоит лишь из пяти заголовочных и трех исходных файлов.

•Заголовки

 •Point.h

 •Window.h

 •Simple_window.h

 •Graph.h

 •GUI.h

•Исходные файлы

 •Window.cpp

 •Graph.cpp

 •GUI.cpp

До главы 16 мы можем игнорировать файлы графического пользовательского интерфейса.

Задание

Это задание напоминает программу “Привет, мир!”. Его цель — ознакомить вас с простейшими графическими средствами.

1. Напишите программу, создающую пустой объект класса

Simple_window
размером 600×400 пикселей с меткой Мое окно, скомпилируйте ее, отредактируйте связи и выполните. Помните о том, что вы должны подключить библиотеку FLTK, описанную в приложении Г, вставить заголовочные файлы
Graph.h
,
Window.h
,
GUI.h
и
Simple_Window.h
в ваш код, а также включить в проект файлы
Graph.cpp
и
Window.cpp
.

2. Добавьте примеры из раздела 12.7 один за другим, сравнивая их друг с другом.

3. Выполните программу, внеся небольшие изменения (например, измените цвет, местоположение фигур или количество точек) в каждом из примеров.

Контрольные вопросы

1. Зачем нужна графика?

2. Почему нельзя обойтись без графики?

3. Чем графика интересна программисту?

4. Что такое окно?

5. В каком пространстве имен находятся наши классы графического интерфейса (наша графическая библиотека)?

6. Какие графические файлы необходимы для использования графических средств из нашей библиотеки?

7. Что представляет собой простейшее окно?

8. Что представляет собой минимальное окно?

9. Что такое метка окна?

10. Как задать метку окна?

11. Что собой представляют экранные, оконные и математические координаты?

12. Приведите примеры простых фигур, которые можно отобразить на экране.

13. Какие команды связывают фигуру с окном?

14. Какие основные фигуры можно использовать для того, чтобы нарисовать шестиугольник?

15. Как вывести текст в окне?

16. Как поместить в окне фотографию вашего лучшего друга или подруги? Напишите свою программу.

17. Представьте, что вы создали объект класса

Window
, но на экране ничего не появилось. Перечислите возможные причины.

18. Представьте, что вы создали объект класса

Shape
, но на экране ничего не появилось. Перечислите возможные причины.

Термины

Программирование. Принципы и практика использования C++ Исправленное издание - _118.png

Упражнения

Для выполнения приведенных ниже изображений рекомендуем использовать класс

Simple_window
.

1. Нарисуйте прямоугольник как объект класса

Rectangle
и как объект класса
Polygon
. Сделайте линии объекта класса
Polygon
красными, а линии объекта класса
Rectangle
синими.

2. Нарисуйте объект класса

Rectangle
с размерами 100×300 и поместите в него слово “Привет!”.