12.7.2. Почти пустое окно
Здесь мы не будем обсуждать обработку ошибок (см. главу 5, в частности раздел 5.6.3), а сразу перейдем к описанию графики в функции main()
Point tl(100,100); // левый верхний угол нашего окна
Simple_window win(tl,600,400,"Canvas");
// координаты окна tl задают положение левого верхнего угла
// размер окна 600*400
// заголовок: Canvas
win.wait_for_button(); // изобразить!
Этот фрагмент программы создает объект класса Simple_window
Next
, и выводит его на экран. Очевидно, что для создания объекта класса Simple_window нам необходима директива #include
, включающая в программу заголовочный файл Simple_window.h
, а не Window.h
. Здесь мы указываем, в каком месте экрана должно появиться окно: его левый верхний угол должен находиться в точке Point(100,100)
. Это близко, но не очень близко к левому верхнему углу экрана. Очевидно, что Point
— это класс, конструктор которого получает пару целых чисел и интерпретирует их как пару координат (Simple_window win(Point(100,100),600,400,"Canvas");
Однако мы хотим использовать точку (100,100) несколько раз, поэтому удобнее присвоить ей символическое имя. Число 600 — это ширина окна, 400 — его высота, а строка "Canvas
Для того чтобы окно действительно было нарисовано на экране, мы должны передать управление системе графического пользовательского интерфейса. Для этого вызываем функцию win.wait_for_button()
Для дальнейшей демонстрации нашей программы мы удалили с экрана все лишнее, оставив только само окно (см. ниже).
Реальный размер окна (в дюймах) зависит от разрешающей способности вашего экрана. Кроме того, на некоторых экранах размер пикселей больше, чем на других.
12.7.3. Оси координат
Практически пустое окно не очень интересно, поэтому попробуем добавить в него какую-нибудь информацию. Что бы мы хотели изобразить? Давайте вспомним, что графика — это не только игры и развлечения, и сделаем что-нибудь серьезное и сложное, например оси координат. График без осей координат, как правило, ужасен. Невозможно себе представить, какие данные можно изобразить, не пользуясь осями координат. Может быть, вам удастся оправдать это в приложении к программе, но намного лучше добавить оси координат; люди часто не читают объяснений, а хорошее графическое представление обычно не нуждается в комментариях. Итак, нам необходимы координатные оси.
Axis xa(Axis::x, Point(20,300), 280, 10, "x axis"); // создаем
// объект Axis
// класс Axis — разновидность класса Shape
// Axis::x означает горизонтальную ось
// начало оси — в точке (20,300)
// длина оси — 280 пикселей 10 делений
// "Ось x" — метка оси
win.attach(xa); // связываем объект xa с окном win
win.set_label("Canvas #2"); // изменяем метку окна
win.wait_for_button(); // изобразить!
Последовательность действий такова: создаем объект класса Axis