Чтение онлайн

на главную

Жанры

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

win.attach(sizes);

win.attach(cal);

win.set_label("Canvas #12");

win.wait_for_button;

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

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

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

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

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

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

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

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

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

main
и т.д.).

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

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

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

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

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

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

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

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

•Заголовки

•Point.h

•Window.h

•Simple_window.h

•Graph.h

•GUI.h

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

•Window.cpp

•Graph.cpp

•GUI.cpp

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

Задание

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

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

Simple_window
размером 600x400 пикселей с меткой Мое окно, скомпилируйте ее, отредактируйте связи и выполните. Помните о том, что вы должны подключить библиотеку 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
, но на экране ничего не появилось. Перечислите возможные причины.

Термины

Упражнения

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

Simple_window
.

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

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

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

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

3. Нарисуйте ваши инициалы высотой 150 пикселей. Используйте толстую линию. Нарисуйте каждый инициал другим цветом.

4. Нарисуйте доску для игры в крестики-нолики размером 3x3, чередуя белые и красные квадраты.

5. Нарисуйте красную рамку шириной один дюйм вокруг прямоугольника, высота которого составляет три четверти высоты вашего экрана, а ширина — две трети ширины экрана.

6. Что произойдет, если вы нарисуете фигуру, которая не помещается в окне? Что произойдет, если вы нарисуете окно, которое не помещается на экране? Напишите две программы, иллюстрирующие эти эффекты.

7. Нарисуйте двумерный дом анфас, как это делают дети: дверь, два окна и крыша с дымовой трубой. Детали можете выбрать сами, можете даже нарисовать дымок из трубы.

Поделиться:
Популярные книги

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Газлайтер. Том 16

Володин Григорий Григорьевич
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 16

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Стрелок

Астахов Евгений Евгеньевич
5. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Стрелок

Шатун. Лесной гамбит

Трофимов Ерофей
2. Шатун
Фантастика:
боевая фантастика
7.43
рейтинг книги
Шатун. Лесной гамбит

Проклятый Лекарь V

Скабер Артемий
5. Каратель
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Проклятый Лекарь V

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Новый Рал

Северный Лис
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Новый Рал

Его наследник

Безрукова Елена
1. Наследники Сильных
Любовные романы:
современные любовные романы
эро литература
5.87
рейтинг книги
Его наследник

Венецианский купец

Распопов Дмитрий Викторович
1. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
7.31
рейтинг книги
Венецианский купец

Мастер темных Арканов

Карелин Сергей Витальевич
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер темных Арканов

Всплеск в тишине

Распопов Дмитрий Викторович
5. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Всплеск в тишине

Начальник милиции

Дамиров Рафаэль
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2