Читаем Программирование полностью

t.set_font(Font::times_bold);

t.set_font_size(20);

win.set_label("Canvas #9");

win.wait_for_button();

Здесь мы увеличили буквы в строке "Hello, graphical world!" до 20 пунктов и выбрали жирный шрифт Times. 

<p id="AutBody_Root225"><strong>12.7.9. Изображения</strong></span><span></p>

Мы можем также загружать изображения из файлов.

Image ii(Point(100,50),"image.jpg"); // файл 400×212 пикселей

                                     // в формате jpg

win.attach(ii);

win.set_label("Canvas #10");

win.wait_for_button();

Файл image.jpg — это фотография двух самолетов, преодолевающих звуковой барьер.

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

ii.move(100,200);

win.set_label("Canvas #11");

win.wait_for_button();

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

<p id="AutBody_Root226"><strong>12.7.10. И многое другое</strong></span><span></p>

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

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();

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

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

<p id="AutBody_Root227"><strong>12.8. Запуск программы</strong></span><span></p>

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

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

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

• Код нашей программы (main() и т.д.).

• Наша интерфейсная библиотека (Window, Shape, Polygon и т.д.).

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

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

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

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

<p id="AutBody_Root228"><strong>12.8.1. Исходные файлы</strong></span><span></p>

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

•Заголовки

 •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 один за другим, сравнивая их друг с другом.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже