Вход/Регистрация
Программирование. Принципы и практика использования C++ Исправленное издание
вернуться

Страуструп Бьерн

Шрифт:

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

12.3. Первый пример

Наша задача — определить классы, из которых можно создавать объекты для вывода на экран. Например, мы можем нарисовать график в виде ломаной линии. Вот небольшая программа, выполняющая эту работу:

#include "Simple_window.h" // открывает доступ к оконной библиотеке

#include "Graph.h" // открывает доступ к графической библиотеке

int main

{

using namespace Graph_lib; // наши графические средства

// находятся в пространстве

// имен Graph_lib

Point tl(100,100); // задаем левый верхний угол экрана

Simple_window win(tl,600,400,"Canvas"); // создаем простое окно

Polygon poly; // создаем фигуру (многоугольник)

poly.add(Point(300,200)); // добавляем точку

poly.add(Point(350,100)); // добавляем другую точку

poly.add(Point(400,200)); // добавляем третью точку

poly.set_color(Color::red); // уточняем свойства объекта poly

win.attach (poly); // связываем объект poly с окном

win.wait_for_button; // передаем управление драйверу

// дисплея

}

Запустив эту программу, мы увидим примерно такую картину.

Пройдемся по строкам программы и посмотрим, как она работает. Сначала подставляем в программу заголовочные файлы нашей библиотеки графического интерфейса.

#include "Simple_window.h" // открывает доступ к оконной библиотеке

#include "Graph.h" // открывает доступ к графической библиотеке

Затем в функции

main
мы сообщаем компьютеру, что средства нашей графической библиотеки находятся в пространстве имен
Graph_lib
.

Затем определяем точку, которую будем считать координатой левого верхнего угла нашего окна.

Point tl(100,100); // задаем координаты левого верхнего угла экрана

Затем создаем окно на экране.

Simple_window win(tl,600,400,"Canvas"); // создаем простое окно

Для этого мы используем класс

Simple_window
, представляющий окно в нашей библиотеке Graph_lib. Конкретный объект класса
Simple_window
носит имя
win
; иначе говоря,
win
— это переменная класса
Simple_window
. Список инициализации объекта win начинается с точки, которая будет использована в качестве левого верхнего угла
tl
, за ней следуют числа 600 и 400. Это ширина и высота окна соответственно, измеренные в пикселях. Мы объясним их смысл позднее, а пока лишь укажем, что они позволяют задать прямоугольник с заданными шириной и высотой. Строка
Canvas
используется для пометки окна. Если присмотритесь, то увидите слово
Canvas
в левом верхнем углу рамки окна.

Далее помещаем в окно некий объект.

Polygon poly; // создаем фигуру (многоугольник)

poly.add(Point(300,200)); // добавляем точку

poly.add(Point(350,100)); // добавляем другую точку

poly.add(Point(400,200)); // добавляем третью точку

Мы определяем многоугольник poly, а затем добавляем к нему точки. В нашей графической библиотеке объекты класса

Polygon
создаются пустыми, мы можем добавить в них любое количество точек, какое пожелаем. Поскольку мы добавили три точки, то получили треугольник. Точки представляют собой простые пары чисел, задающих горизонтальные и вертикальные координаты x и y в окне.

Для того чтобы продемонстрировать такую возможность, мы сделали стороны многоугольника красными.

poly.set_color(Color::red); // уточняем свойства объекта poly

В заключение связываем объект

poly
с нашим окном
win
.

win.attach(poly); // связываем объект poly с окном

Легко заметить, что на экране пока не происходит вообще ничего. Мы создали окно (точнее, объект класса

Simple_window
) и многоугольник (с именем
poly
), окрасили многоугольник в красный цвет (
Color::red
) и связали его с окном
win
, но мы не дали команду отобразить это окно на экране. Это делает последняя строка в программе.

  • Читать дальше
  • 1
  • ...
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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