Графические примитивы. Линия. Ломаная линия. Подключение файла ресурсов

Работа с графическими объектами в ИСР C++ Builder 6.0

C++ Builder позволяет программисту разрабатывать программы, которые работают с графикой. В этой главе рассказывается, что надо сделать, чтобы на поверхности формы появилась картинка, сформированная из графических примитивов, или иллюстрация, созданная в графическом редакторе или полученная в результате сканирования фотографии.

Разработка справочной системы

Программа может вывести графику на поверхность формы (или компонента image), которой соответствует свойство canvas (Canvas -- холст для рисования). Для того чтобы на поверхности формы или компонента image появилась линия, окружность, прямоугольник или другой графический элемент(примитив), необходимо к свойству canvas применить соответствующий метод.

Например, оператор

Forml->Canvas->Rectangle(10,10, 50, 50) ;

рисует на поверхности формы прямоугольник.

Таблица 2.2. Таблица описывает методы рисования примитивов.

Действие

FillRect(xl,yl,х2,у2)

Рисует закрашенный прямоугольник, xl, yl, x2,у2 -- определяют координаты диагональных углов

FrameRect(xl,yl,х2,у 2)

Рисует контур прямоугольника, xl, yl, х2, у2 -определяют координаты диагональных углов

RounRect(xl,yl,x2,y2,x3,y3)

Рисует прямоугольник со скругленными углами

Ellipse(xl,yl,х2,у2)

Рисует эллипс или окружность (круг), xl, yl,х2, у2 -- координаты прямоугольника, внутри которого вычерчивается эллипс или, если пря-

моугольник является квадратом, окружность

Polyline(points,n)

Рисует ломаную линию, points-- массив типа TPoint. Каждый элемент массива представляет собой запись, поля х и у которой содержат

координаты точки перегиба ломаной; n количество звеньев ломаной. Метод Polyline вычерчивает ломаную линию, последовательно соединяя прямыми отрезками точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т. д.

Рисует линию из текущей точки в точку с указанными координатами

Rectangle(xl,yl,x2,у2)

Рисует прямоугольник, xl, yl и х2, у2 -- координаты левого верхнего и правого нижнего углов прямоугольника. Цвет границы и внутренней области прямоугольника могут быть разными

Методы вывода графических примитивов рассматривают свойство canvas как некоторый абстрактный холст, на котором они могут рисовать (Canvas переводится как "поверхность", "холст для рисования"). Холст состоит из отдельных точек -- пикселов. Положение пиксела на поверхности холста характеризуется горизонтальной (X) и вертикальной (Y) координатами. Координаты возрастают сверху вниз и слева направо. Левый верхний пиксел поверхности формы (клиентской области) имеет координаты (0,0), правый нижний -- (ciientwidth, ciientHeight). Доступ к отдельному пикселу осуществляется через свойство Pixels, представляющее собой двумерный массив, элементы которого содержат информацию о цвете точек холста. Следует обратить внимание на важный момент. Изображение, сформированное на поверхности формы, может быть испорчено, например, в результате полного или частичного перекрытия окна программы другим окном. Поэтому программист должен позаботиться о том, чтобы в момент появления окна программа перерисовала испорченное изображение. К счастью, операционная система Windows информирует программу о необходимости перерисовки окна, посылая ей соответствующее сообщение, в результате чего возникает событие OnPaint. Событие OnPaint возникает и в момент запуска программы, когда окно появляется на экране в первый раз. Таким образом, инструкции, обеспечивающие вывод графики на поверхность формы, надо поместить в функцию обработки события onPaint.

Рис.2.4.Координаты точек поверхности формы(Холста)

Карандаш и кисть

Методы вычерчивания графических примитивов обеспечивают только вычерчивание. Вид графического элемента определяют свойства Реп (карандаш) и Brush (кисть) той поверхности (Canvas), на которой рисует метод. Карандаш и кисть, являясь свойствами объекта canvas, в свою очередь представляют собой объекты Реп и Brush. Свойства объекта Реп задают цвет, толщину и тип линии или границы геометрической фигуры. Свойства объекта Brush (табл. 3.3) задают цвет и способ закраски области внутри прямоугольника, круга, сектора или замкнутого контура.

Таблица 2.3. Свойства объекта Pen (карандаш)

Свойство

Определяет

Цвет линии

Толщину линии (задается в пикселах)

Вид линии (psSolid-- сплошная; psDash-- пунктирная, длинные штрихи; psDot -- пунктирная, короткие штрихи; psDashDot -- пунктирная, чередование длинного и короткого штрихов; psDashDotDot -пунктирная, чередование одного длинного и двух коротких штрихов; psClear -- линия не отображается (используется, если не надо изображать границу области -- например, прямоугольника)

Свойства объекта Brush (кисть)

Цвет закрашивания замкнутой области

Стиль заполнения области (bsSolid -- сплошная запивка. Штриховка: bsHorizontal -- горизонтальная; bsVertical -вертикальная; bsFDiagonal -- диагональная с наклоном линий вперед; bsBDlagonal -- диагональная с наклоном линий назад; bsCross -- в клетку; bsDiagCross -- диагональная клетка

Графические примитивы

Любая картинка, чертеж или схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Таким образом, для того чтобы на экране появилась нужная картинка, программа должна обеспечить вычерчивание (вывод) графических элементов -- примитивов, составляющих эту картинку. Вычерчивание графических примитивов на поверхности (формы или компонента image -- области вывода иллюстрации) осуществляется применением соответствующих методов к свойству Canvas этой поверхности.

Вычерчивание прямой линии выполняет метод LineTo. Метод рисует линию из той точки, в которой в данный момент находится карандаш (эта точка называется текущей позицией карандаша или просто "текущей"), в точку, координаты которой указаны в инструкции вызова метода. Например, оператор Canvas-XLineTo(100,200) рисует линию в точку с координатами (100, 200), после чего текущей становится точка с координатами (100, 200). Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Сделать это можно при помощи метода MoveTo, указав в качестве параметров координаты точки начала линии.

Например, операторы

CanVas->MoveTo(10,10); // установить карандаш в точку (10,10)

Canvas->LineTo(50,10); // линия из точки (10,10) в точку (50,10)

рисуют горизонтальную линию из точки (10, 10) в точку (50, 10).

Используя свойство текущей точки, можно нарисовать ломаную линию.

Например, операторы

Canvas->MoveTo(10,10);

Canvas->LineTo(50,10);

Canvas-LineTo(10,20) ;

Canvas-LineTo(50,20);

рисуют линию, похожую на букву Z.

Ломаная линия

Метод Polyline вычерчивает ломаную линию. В качестве параметров методу передается массив типа TPoint, содержащий координаты узловых точек линии, и количество звеньев линии. Метод Polyline вычерчивает ломаную линию, последовательно соединяя точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т. д.

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

TPoint p; // координаты начала, конца и точек перегиба

II задать координаты точек ломаной

р.х = 100; р.у = 100; // начало

р.х = 100; р.у = 150; // точка перегиба

р.х = 150; р.у = 150; // точка перегиба

р.х = 150; р.у = 100; // конец

Canvas->Polyline(р,3); // ломаная из трех звеньев

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

Прямоугольник

Метод Rectangle вычерчивает прямоугольник. В инструкции вызова метода надо указать координаты двух точек -- углов прямоугольника.

Например, оператор Canvas->Rectangle(10,10, 50, 50) рисует квадрат, левый верхний угол которого находится в точке (10, 10), а правый нижний в точке (50, 50).

Цвет, вид и ширину линии контура прямоугольника определяют значения свойства Реп, а цвет и стиль заливки области внутри прямоугольника -значения свойства Brush той поверхности, на которой метод рисует прямоугольник. Например, следующие операторы рисуют флаг Российской Федерации.

Canvas->Brush->Color = clWhite; // цвет кисти -- белый

Canvas->Rectangle (10,10,90,30);

Canvas->Brush->Color = clBlue; // цвет кисти -- синий

Canvas->Rectangle(10,30,90,50);

Canvas->Brush->Color = clRed; // цвет кисти -- красный

Canvas->Rectangle(10,50,90,70);

Вместо четырех параметров -- координат двух диагональных углов прямо угольника -- методу Rectangle можно передать один параметр -- структуру типа TRect, поля которой определяют положение диагональных углов прямоугольной области. Следующий фрагмент кода демонстрирует использование структуры TRect в качестве параметра метода Rectangle.

TRect ret; // прямоугольная область

ret.Bottom = 50;

Canvas->Rectangle(rct); // нарисовать прямоугольник

Есть еще два метода, которые вычерчивают прямоугольник. Метод FillRect вычерчивает закрашенный прямоугольник, используя в качестве инструмен та только кисть (Brush), а метод FrameRect -- только контур и использует только карандаш (Реn). У этих методов только один параметр -- структура типа TRect. Поля структуры TRect содержат координаты прямоугольной области.Значения полей структуры TRect можно задать при помощи функции Rect.

Например:

TRect ret; // область, которую надо закрасить

ret = Rect(10,10,30,50); // координаты области

Canvas->Brush->Color = clRed; // цвет закраски

Canvas->FillRect (ret);

Метод RoundRec вычерчивает прямоугольник со скругленными углами. Ин струкция вызова метода RoundRec в общем виде выглядит так:

Canvas->RoundRec(xl,yl,х2,у2,хЗ,уЗ)

Параметры xl, yl, x2, y2 определяют положение углов прямоугольника, а параметры хЗ и уЗ -- размер эллипса, одна четверть которого используется для вычерчивания скругленного угла.

Рис.2.5.

Многоугольник

Метод Polygon вычерчивает многоугольник. Инструкция вызова метода в общем виде выглядит так:

Canvas->Polygon(p, п)

где р -- массив записей типа TPoint, который содержит координаты вершин многоугольника; п -- количество вершин. Метод Polygon чертит многоугольник, соединяя прямыми линиями точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т. д. Вид границы многоугольника определяют значения свойства Реп, а вид заливки области, ограниченной линией границы, - значения свойства Brush той поверхности, на которой метод рисует. Ниже приведен фрагмент кода, который, используя метод Polygon, рисует ромб,

TPoint p [ 4 ] ; // четыре вершины

// координаты вершин

р.х = 50; р .у = 100;

р.х = 150; р.у = 75;

р.х = 250; р [ 2 ] . у = 100;

р.х = 150; р.у = 125;

Canvas->Brush->Color = clRed;

Canvas->Polygon(p,3);

Окружность и эллипс

Нарисовать эллипс или окружность (частный случай эллипса) можно при помощи метода Ellipse. Инструкция вызова метода в общем виде выглядит следующим образом:

Canvas->Ellipse(xl,yl,x2, y2)

Параметры xi, yi, x2, y2 определяют координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, -- окружность.


Рис.2.6.

Вместо четырех параметров -- координат диагональных углов прямоугольника -методу Ellipse можно передать один - объект типа TRect. Следующий фрагмент кода демонстрирует использование объекта TRect в качестве параметра метода Ellipse. TRect rec = Rect(10,10,50,50);

Canvas->Ellipse(rec);

Как и в случае вычерчивания других примитивов, вид контура эллипса (цвет, толщину и стиль линии) определяют значения свойства Реп, а цвет и стиль заливки области внутри эллипса -- значения свойства Brush той поверхности (canvas), на которой метод чертит.

Справочная система

Каждая программа должна обеспечивать пользователя справочной информацией. Существует два способа отображения справочной информации: классический и современный, в "интернет-стиле". Классический способ отображения справочной информации применяется большинством приложений, в том числе и C++ Builder. Отображение справочной информации в интернет-стиле используется в программных продуктах Microsoft и, в последнее время, в продуктах других разработчиков программного обеспечения. Классическая справочная система представляет собой набор файлов, используя которые программа Winhelp, являющаяся составной частью Windows, выводит справочную информацию. Основой такой справочной системы являются hip-файлы. Основой современной справочной системы являются chm-файлы. Chm-файл представляет собой компилированный HTML-документ, полученный путем компиляции (объединения) файлов, составляющих HTML-документ, в том числе и файлов иллюстраций. Создать hip-файл можно при помощи утилиты Microsoft Help Workshop, которая входит в комплект C++ Builder (файл утилиты hce.exe находится в каталоге CBuilderHelpTools). Chm-файл можно создать при помощи утилиты Microsoft HTML Help Workshop, которая, к сожалению, в состав C++ Builder не включена. Рассмотрим процесс создания справочной системы классическим методом.

Создание справочной системы при помощи Microsoft Help Workshop

Рис.2.7.готовое окно справочной системы

Процесс создания справочной системы состоит из двух этапов. На первом этапе надо подготовить справочную информацию, на втором - преобразовать справочную информацию в справочную систему. Задача первого этапа может быть решена при помощи редактора текста, второго - посредством утилиты Microsoft Help Workshop. Создание справочной системы при помощи Microsoft Help Workshop

Подготовка справочной информации

Исходным материалом для Microsoft Help Workshop является справочная информация, представленная в виде rtf-файла. Наиболее просто подготовить rtf-файл справочной информации можно при помощи Microsoft Word. Сначала нужно набрать текст разделов справки. Заголовки разделов нужно оформить одним из стилей Заголовок. Каждый раздел должен заканчиваться символом "разрыв страницы". После того как текст разделов будет набран, каждому разделу надо назначить идентификатор. Идентификатор назначается путем вставки перед заголовком раздела сноски #. Для того чтобы назначить разделу идентификатор, нужно установить курсор перед первой буквой заголовка раздела, затем в меню Вставка выбрать команду Сноска, а появившемся диалоговом окне Сноски выбрать в группе Нумерация положение другая, в поле редактирования ввести символ "#" В результате щелчка на кнопке ОК в документ будет вставлена сноска #, а в нижней части окна документа откроется окно ввода текста сноски. В этом окне рядом со значком сноски надо ввести идентификатор раздела. Рекомендуется, чтобы идентификатор раздела состоял из префикса IDH_ и порядкового номера раздела, например, IDH_I, IDH_II и т. д. Обычно в тексте справочной информации есть ссылки, которые обеспечивают переход к другому разделу, вязанному с тем, который в данный момент видит пользователь. Во время подготовки текста справочной информации слово-ссылку следует подчеркнуть двойной линией и сразу за этим словом, без пробела, поместить идентификатор раздела справки, к которому должен быть выполнен переход в результате выбора ссылки. Вставленный идентификатор необходимо оформить как скрытый текст. Чтобы задать двойное подчеркивание, нужно выделить слово-ссылку, выбрать команду Формат | Шрифт и в появившемся окне выбрать способ одчеркивания. Аналогичным образом надо задать "скрытый текст" для идентификатора. В качестве примера ниже приведен вид окна редактора текста во время подготовки файла справочной информации для программы "Сапер 2003". Название игры помечено как ссылка на другой раздел справки, который имеет идентификатор IDH_3.


Помимо ссылки, обеспечивающей переход к другому разделу справки, в документ можно вставить ссылку на комментарий -- текст, который появляется во сплывающем окне. Во время работы справочной системы ссылки на комментарии выделяются цветом и подчеркиваются пунктирной линией. При подготовке документа справочной системы комментарии, как и разделы справки, располагают на отдельной странице, однако текст комментария не должен иметь заголовка. Сноска # должна быть поставлена перед текстом комментария. Ссылка на комментарий оформляется следующим образом: сначала надо подчеркнуть одинарной линией слово, выбор которого должен вызвать появление комментария, затем сразу после этого слова вставить идентификатор комментария, оформив его как скрытый текст. Следует отметить, что справочная информация может быть распределена по нескольким файлам.

Проект справочной системы

Преобразование файла справочной информации в файл справочной системы выполняет входящий в состав Microsoft Help Workshop компилятор. Исходными данными для компилятора является справочная информация представленная в виде rtf-файлов, и файл проекта справочной системы.Для того чтобы преобразовать справочную информацию, подготовленную в редакторе текста, в справочную систему, сначала надо создать файл проекта справочной системы. Для этого нужно запустить Microsoft Help Workshop и в меню File выбрать команду New | Help Project .На экране появится диалоговое окно Project File Name. В этом окне надо открыть папку, в которой находится файл справочной информации (rtf-файл), задать имя проекта и щелкнуть на кнопке Сохранить. В результате этих действий будет создан файл проекта (hpj-файл) и станет доступным окно проекта справочной системы.


Рис 2.9.

Первое, что надо сделать, -- это добавить в проект rtf-файл, в котором находится справочная информация. Для этого нужно сначала щелкнуть на кнопке Files, затем в открывшемся окне Topic Files -- на кнопке Add.

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


Рис.3.1.


Рис.3.2.

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

Следующее, что надо сделать, -- это назначить числовые значения идентификаторам разделов справочной информации. Для этого в окне проекта надо сначала щелкнуть на кнопке Map, затем, в открывшемся окне Map, - накнопке Add. На экране появится окно Add Map Entry.

В поле Topic ID этого окна надо ввести идентификатор раздела справки (идентификаторы были назначены разделам во время создания rtf-файла), в поле Mapped numeric value -- число, идентифицирующее раздел. В поле Comment можно ввести комментарий -- название раздела справки. После того как будут, назначены числовые значения идентификаторам разделов справки, окно Map можно закрыть.

Последнее, что надо сделать,- это настроить вид окна справочной информации. Для этого надо в окне проекта щелкнуть на кнопке Windows, в поле Create a window named открывшегося окна Create a window ввести слово main и щелкнуть на кнопке ОК. На экране появится окно Window Properties, в поле Title bar text вкладки General которого нужно ввести заголовок главного окна создаваемой справочной системы.На этом процесс создания проекта простой справочной системы можно

считать завершенным. Теперь можно выполнить компиляцию. Для этого надо в меню File выбрать команду Compile, в появившемся диалоговом окне Compile a Help File установить флажок Automatically display Help file in WinHelp when done (Автоматически показывать созданную справочную систему по завершении компиляции) и щелкнуть на кнопке Compile.

По завершении компиляции на экране появится окно с информационным сообщением о результатах компиляции и, если компиляция выполнена успешно, окно созданной справочной системы. Файл справочной системы (HLP-файл) компилятор поместит в ту папку, в которой находится файл проекта.

Вывод справочной информации

Обычно окно справочной системы становится доступным в результате нажатия клавиши или выбора в меню Справка команды?. Для того чтобы во время работы программы пользователь, нажав клавишу , мог получить справочную информацию, надо чтобы свойство HelpFile главного окна приложения содержало имя файла справочной системы, а свойство HelpContext - числовой идентификатор нужного раздела.

Для каждого компонента формы можно задать свой раздел справки. Раздел справки, который появляется, если фокус находится на компоненте и пользователь нажимает клавишу , определяется значением свойства HelpContext этого компонента. Если значение свойства Helpcontexr элемента управления равно нулю, то при нажатии клавиши появляется тот раздел справки, который задан для формы приложения.

Для того чтобы справочная информация появилась на экране в результате выбора в меню? команды Справка, надо создать функцию обработки события Onclick для соответствующей команды меню. Процесс создания функции обработки события для команды меню ничем не отличается от процесса создания функции обработки события для элемента управления, например, для командной кнопки: в списке объектов надо выбрать объект типа Tmenuitem, для которого создается функция обработки события, а во вкладке Events -- событие.

Ниже приведена функция обработки события Onclick для команды Справка меню?.

// выбор в меню? команды Справка

void _ fastcall TForml: :N3Click (TObject *Sender)

WinHelp(Forml->Handle, "saper.hlp",HELP_CONTEXT, 1) ;

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

Компонент - MainMenu


Рис.3.3. Главная форма программы "Сапер"

Главное окно программы содержит компонент MainMenui, который представляет собой главное меню программы. Значок компонента MainMenu находится на вкладке Standard.

Рис.3.4.Компонент MainMenu

Значок компонента MainMenu можно поместить в любое место формы, т. к. во время работы программы он не виден. Пункты меню появляются в верхней части формы в результате настройки компонента. Для настройки меню используется редактор меню, который запускается двойным щелчком левой кнопкой мыши на значке компонента или путем выбора из контекстного меню компонента команды Menu Designer. В начале работы над новым меню, сразу после добавления компонента к форме, в окне редактора находится один-единственный прямоугольник - заготовка пункта меню. Чтобы превратить эту заготовку в меню, нужно в поле Caption окна Object Inspector ввести название меню.Если перед какой-либо буквой в названии меню ввести знак &, то во время работы программы можно будет активизировать этот пункт меню путем нажатия комбинации клавиши и клавиши, соответствующей символу, перед которым стоит знак &. В названии меню эта буква будет подчеркнута. Чтобы добавить в главное меню элемент, нужно в окне редактора меню выбрать последний (пустой) элемент меню и ввести название нового пункта. Чтобы добавить в меню команду, нужно выбрать тот пункт меню, в который надо добавить команду, переместить указатель активного элемента меню в конец списка команд меню и ввести название команды. После того как будет сформирована структура меню, нужно, используя окно Object Inspector, выполнить настройку элементов меню (выбрать настраиваемый пункт меню можно в окне формы приложения или из списка объектов в верхней части окна Object Inspector). Каждый элемент меню (пункты и команды) -это объект типа TMenuitem. Свойства объектов TMenuitem определяют вид меню во время работы программы. При выборе во время работы программы элемента меню происходит событие Click. Чтобы создать процедуру обработки этого события, нужно в окне формы выбрать пункт меню и щелкнуть левой кнопкой мыши -C++ Builder создаст шаблон процедуры обработки этого события. В качестве примера ниже приведена функция обработки события click, которое возникает в результате выбора из меню? команды Справка. N3 - это имя элемента меню, соответствующего этой команде.

// выбор в меню "?" команды Справка

void fastcall TForml::N3Click(TObject *Sender)

WinHelp(Forml->Handle,"saper.hip",HELP_CONTEXT,I);

С++ Builder в задачах и примерах - Культин Н.Б. Культин Н.Б. С++ Builder в задачах и примерах - БХВ Петербург, 2005. - 335 c.
ISBN 0-470-86398-65-94157-631-5
Скачать (прямая ссылка): C++buildervzadachah2005.pdf Предыдущая 1 .. 58 > >> Следующая
Парные картинки Игра Парные картинки Демонстрирует работу с графикой, отображение справочной информации. Картинки загружаются из файла pictures.bmp
1
Описание СО-ЙОМ 321
Таблица П1 (продолжение)
Проект (каталог) Описание
Печать Программа Счет демонстрирует вывод на принтер и позволяет подготовить и распечатать счет
Пинг-понг Программа Пинг-понг демонстрирует, как можно сделать графику интерактивной
Погода Программа Погода (проект Meteo.bpr) демонстрирует операцию записи в файл - добавляет в файл meteo.txt информацию о температуре воздуха. Если файла данных в текущем каталоге нет, то программа создает его. Программа Среднемесячная температура (проект Meteolnfo.bpr) демонстрирует чтение данных из текстового файла (meteo.txt)
Полет в облаках Мультипликация, элементы которой загружаются из bmp-файла. Очередной кадр формируется 8 памяти, а затем выводится на поверхность формы, что предотвращает мерцание изображения (стирает обьект и рисует его на новом месте - как одна операция вывода)
Приветствие Программа Приветствие демонстрирует вывод текста на поверхность формы. Вне зависимости от размера формы текст выводится в ее центре
Просмотр иллю- Программа Просмотр иллюстраций позволя-
страций ет просмотреть jpg-иллюстрации. Демонстрирует использование компонентов ListBox, OpenDialog, Image
Просмотр иллю- Программа Просмотр иллюстраций позволяет
страций_2 просмотреть файлы формата JPEG, например, фотографии. Выбор папки выполняется в стандартном окне Выбор папки. Иллюстрации можно просматривать по кадрам или в режиме слайд-шоу
Сапер Игра Сапер. Демонстрирует работу с графикой, вывод дочернего окна и отображение справочной информации
Секундомер Программа Секундомер демонстрирует использование компонента Timer
322 Приложение
Таблица П1 (продолжение)
Проект (каталог) Описание
Сила тока Программа Сила тока демонстрирует использование компонентов TextBox и Label, а также обработку исключения EZeroDivide (деление на ноль)
Собери картинку Игра Собери картинку - игра "15" с графическим интерфейсом (вместо цифр - фрагменты картинки). Картинка загружается из bmp-файла, имя которого указано в командной строке запуска программы, или из файла, который находится в том же каталоге, что и файл программы
Сопротивление Программа Сопротивление вычисляет сопротивление электрической цепи, состоящей из двух резисторов, которые могут быть соединены последовательно или параллельно. Демонстрирует использование компонента RadioButton
Справочная информация Программа Конвертор демонстрирует различные способы отображения справочной информации. В подкаталоге hip находятся файлы, необходимые для сосздания файла справки
Справочная ин-формация_2 Программа демонстрирует различные методы отображения справочной информации. В подка-талоге\СЬт находятся файлы, необходимые для создания файла справочной системы
Флаг Программа Олимпийский флаг демонстрирует вывод графики на поверхность формы
Фоновый рисунок Программа Фоновый рисунок демонстрирует, как можно получить фоновый рисунок путем многократного вывода битового образа на поверхность формы. Битовый образ загружается из файла Puzzle.bmp
Фунт Программа Фунты-килограммы позволяет пересчитать вес из фунтов в килограммы. Кнопка Пересчет доступна только в том случае, если пользователь ввел исходные данные
Описание CD-ROM
323
Таблица П1 (окончание)
Проект (каталог) Описание
Ходики Часы с часовой, минутной и секундной стрелками. Показывают текущее время. Замечание. Если каталог проекта назвать "Часы", то возникает ошибка времени компиляции. Компилятору не нравится слово "Часы", точнее буква “ы"
Экзаменатор Программа Экзаменатор Вопросы считываются из {хЬфайла. Пример файла теста - см. peterburg.txt. Имя файла теста надо указать в командной строке запуска программы. Команду запуска надо набрать в окне Запуск программы, которое становится доступным в результате выбора команды Пуск | Выполнить
Экзаменатор_2 Универсальная программа тестирования Экзаменатор. Демонстрирует использование компонента ХМІ_6оситепї (файл теста - ХМЬдокумент). Имя файла теста передается в программу через параметр командной строки. Для облегчения процесса запуска программы можно создать ЬаЬфайп (см. economics.bat) .
Электроэнергия Программа Электроэнергия показывает, как одна функция может обрабатывать события разных (но однотипных) компонентов
Предметный указатель
в
ВгшИ 309, 310
С
Сапуад 278, 291 С1іетНеі§1п 278 С1іет\УісШі 278
X
ХМБ-файл 232
А
Абсолютное значение 311
Арктангенс 312
Б
Битовый образ:
загрузка из файла 81, 114 загрузка из ресурса 118
Браузер 57
В
Воспроизведение:
АУІ 150 СО 142 МЮІ 138
Р
Реп 308, 309
т
Тгапврагеш 308
МРЗ 128 \?АУ 124 Видео 150 Вывод: в файл 62 на принтер 259 Вывод на поверхность фор мы:
картинка 81, 306 текст 306
Графика:
анимация 115 битовый образ 114 движение объекта 109 иллюстрация 100
Базовые компоненты
325
линия 104
мультипликация 114 окружность 84 прямоугольник 87 сектор 93 текст 82
фоновый рисунок 121
д
Диалоговое окно:
Выбор папки 128, 255 О программе 181 Открыть файл 33

Конструкторы и деструкторы

Конструктор предназначен для инициализации объекта вызывается автоматически при его создании. Ниже перечислены основные свойства конструкторов:

Конструктор не возвращает значение. Нельзя получить указатель на конструктор.

Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации (при этом используется механизм перегрузки).

Конструктор, вызываемый без параметров, называется конструктором по умолчанию.

Параметры конструктора могут иметь любой тип, кроме этого же класса. Можно задавать значение параметров по умолчанию. Их может содержать только один из конструкторов.

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

Конструкторы не наследуются.

Конструкторы нельзя описывать с модификаторами const, virtual и static

Конструкторы глобальных объектов вызываются до вызова функции main. Локальные объекты создаются, как только становится активной область их действий. Конструктор запускается и при создании временного объекта (например, при передачи объекта из функции).

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

Для локальных объектов - при выходе из блока, в котором они объявлены;

Для глобальных - как часть процедуры выхода из main;

Для объектов, заданных через указатели, деструктор вызывается неявно при использовании операции delete.

Имя деструктора начинается с тильды (), непосредственно за которой следует имя класса. Свойства деструктора:

не имеет аргументов и возвращаемого значения;

не может быть объявлен как const или stract;

не наследуется;

может быть виртуальным.

Если деструктор явным образом не определен, компилятор автоматически пустой деструктор.

Работа с графикой в С++ Builder

В C++ Builder для графических построений предусмотрены специальные компоненты. TCanvas(Канва) - класс, предназначенный для вывода и хранения графических объектов в C++ Builder. Канва входит в состав большинства визуальных компонентов, кроме большинства визуальных компонентов, кроме стандартных оконных контролов (TButton, TMemo, Tpanel и т.п.).

При помощи методов этого класса можно рисовать как и стандартные примитивы (линии, эллипсы, прямоугольники), так и графические объекты, типа Graphics::TBitmap.

Доступ к канве любого объекта происходит следующим образом:

имя_объекта->Canvas->Свойство/Метод;

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

Точка(0,0) - верхний левый угол канвы. Значение по х-координате возрастает слева направо от точки(0,0), а значение по у-координате сверху вниз.

Note: This Early Access game is not complete and may or may not change further. If you are not excited to play this game in its current state, then you should wait to see if the game progresses further in development.

What the developers have to say:

Why Early Access?

“Game Builder is an experimental prototype built to see if a game-tool hybrid is something that folks are interested in. If users are digging it (or what it could become), we’ll continue to grow the app and develop features based on feedback.”

Approximately how long will this game be in Early Access?

“Given this is a free early experimental prototype, it depends on users’ feedback - it could range from several months to a year.”

How is the full version planned to differ from the Early Access version?

“We will add real-time multiplayer very soon, so you can create and play games with your friends.

Beyond that, the scope of the full version is based on Early Access user feedback, but here are some of the things we have considered adding:

  • Unity3D import/export
  • YouTube textures
  • Sound effects
  • Particle effect scripting
  • Path finding NPCs
  • More pre-made behaviors and objects
  • Sharing behaviors and pre-made objects on Steam Workshop
  • More example games
  • Programmable camera FX
  • 2D UI creation tools

What is the current state of the Early Access version?

“This is a stable build with production-quality graphics.

This includes all of the features listed in the “About This” section, including these tools for building games:

  • Create Tool: Search for and add 3D models from Google Poly and 2D images from Google Images
  • Move and Rotate Tools: Place the objects in 3D space
  • Scale Tool: Grow or shrink the object
  • Inspect Tool: Add pre-made or custom behaviors to the objects
  • Construct Tool: Create levels with terrain blocks and walls
  • Text Tool: Create notes or text bubbles
  • Copy Tool: Copy and paste
  • Delete Tool: Exploded objects
There is still much to do, especially multiplayer, but we wanted to get this out there and see what features you think should be a priority.”

Will the game be priced differently during and after Early Access?

“Game Builder will remain free to the foreseeable future.”

How are you planning on involving the Community in your development process?

“We are active on the Steam discussion board as well as social media. Or you can use our built-in feedback forms. However you want to talk to us, we are here to listen and improve the product for you.”

Play Game Builder

You can now find other builders to collaborate with using the snazzy new game browser! Just click "Join Multiplayer" from the main menu. To start a public game, load a project and choose "Public Multiplayer".

Please remember that multiplayer is still very much in BETA, so there will be some bugs and disconnects. To help prevent catastrophic loss of work, we have also made it easier to restore autosaves:

And last but not least, you can hold B with the Construct Tool to create large filled areas more quickly:

We hope everyone is having a great holiday break. We"ll soon be back in full-swing, and we can"t wait to bring you more exciting updates in 2019!

4 comments

C++ Builder позволяет программисту разрабатывать программы, которые работают с графикой. В этой главе рассказывается, что надо сделать, чтобы на поверхности формы появилась картинка, сформированная из графических примитивов, или иллюстрация, созданная в графическом редакторе или полученная в результате сканирования фотографии.

  • Карандаш и кисть

    Методы вычерчивания графических примитивов обеспечивают только вычерчивание. Вид графического элемента определяют свойства Реn (карандаш) и Brush (кисть) той поверхности (Canvas), на которой рисует метод.

  • Графические примитивы. Линия. Ломаная линия.

    Любая картинка, чертеж или схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Таким образом, для того чтобы на экране появилась нужная картинка, программа должна обеспечить вычерчивание (вывод) графических элементов - примитивов, составляющих эту картинку.

  • Прямоугольник

    Метод Rectangle вычерчивает прямоугольник. В инструкции вызова метода надо указать координаты двух точек - углов прямоугольника. Например, оператор: | Canvas › Rectangle(10.10.50.50) | Рисует квадрат, левый верхний угол которого находится в точке (10, 10), а правый нижний в точке (50, 50).

  • Многоугольник. Окружность и эллипс.

    Метод Polygon вычерчивает многоугольник. Инструкция вызова метода в общем виде выглядит так: | Canvas › Polygon(p,n) | Где р - массив записей типа TPoint, который содержит координаты вершин многоугольника; n - количество вершин.

  • Дуга. Сектор.

    Метод Arc рисует дугу - часть эллипса (окружности). Инструкция вызова метода в общем виде выглядит так: | Canvas › Arc(xl,yl,х2,у 2,х3,у3, х4,у4) | Параметры x1, y1, х2, у2 определяют эллипс (окружность), частью которого является дуга.

  • Текст

    Вывод текста (строк типа Ansistring) на поверхность графического объекта обеспечивает метод TextOutA. Инструкция вызова метода TextoutA в общем виде выглядит следующим образом: | Canvas › TextOutA(x,y,Teкст) | Параметр текст задает выводимый текст.

  • Точка

    Поверхности, на которую программа может осуществлять вывод графики, соответствует объект canvas. Свойство Pixels, представляющее собой двумерный массив типа TColor, содержит информацию о цвете каждой точки графической поверхности.

  • Иллюстрации

    Наиболее просто вывести иллюстрацию, которая находится в файле с расширением.bmp, .jpg или.ico, можно при помощи компонента image, значок которого находится на вкладке Additional палитры компонентов (рис. 3.9). Основные свойства компонента приведены в табл. 3.5. | Рис. 3.9.

  • Битовые образы

    Для формирования сложных изображений используют битовые образы. Битовый образ - это, как правило, небольшая картинка, которая находится в памяти компьютера. | Сформировать битовый образ можно путем загрузки из bmp-файла или из ресурса, а также путем копирования фрагмента из другого битового образа, в том числе и с поверхности формы.

  • Мультипликация. Метод базовой точки.

    Под мультипликацией обычно понимается движущийся и меняющийся рисунок. В простейшем случае рисунок может только двигаться или только меняться. | Обеспечить перемещение рисунка довольно просто: надо сначала вывести рисунок на экран, затем через некоторое время стереть его и снова вывести этот же рисунок, но уже на некотором расстоянии от его первоначального положения.

  • Использование битовых образов. Загрузка битового образа из ресурса программы.

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

  • Создание файла ресурсов

    Файл ресурсов можно создать при помощи утилиты Image Editor, которая поставляется вместе с C++ Builder. Запустить Image Editor можно из C++ Builder, выбрав в меню Tools команду Image Editor, или из Windows, выбрав команду Пуск › Программы › Borland C++Builder › Image Editor.

  • Подключение файла ресурсов

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



  • Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: