C++ Builder - вопросы программирования


Работа с графикой


В этой главе ...
В этой главе...C++ Builder позволяет программисту разрабатывать программы, которые работают с графикой. В этой главе рассказывается, что надо сделать, чтобы на поверхности формы появилась картинка...
Холст
Холст Программа может вывести графику на поверхность формы (или компонента image), которой соответствует свойство canvas (Canvas — холст для рисования). Для того чтобы на поверхности формы или ком...
Таблица 3 1 Методы вычерчивания графических примитивов
Таблица 3.1. Методы вычерчивания графических примитивов МетодДействиеLineTo(x,y)Рисует линию из текущей точки в точку с указанными координатамиRectangle (x1,y1,x2, y2)Рисует прямоугольник, x1, y1...
Координаты точек поверхности формы (холста)
Рисунок 3.1. Координаты точек поверхности формы (холста)  ...
Карандаш и кисть
Карандаш и кисть Методы вычерчивания графических примитивов обеспечивают только вычерчивание. Вид графического элемента определяют свойства Реn(карандаш) и Brush (кисть) той поверхности (Canvas),...
Таблица 3 2 Свойства объекта Реn (карандаш)
Таблица 3.2. Свойства объекта Реn (карандаш) СвойствоОпределяетColorЦвет линииWidthТолщину линии (задается в пикселах)StyleВид линии (psSolid— сплошная; psDash— пунктирная, длинные штрихи; psDot...
Таблица 3 3 Свойства объекта Brush (кисть)
Таблица 3.3. Свойства объекта Brush (кисть) СвойствоОпределяетColorЦвет закрашивания замкнутой областиStyleСтиль заполнения области (bsSolid — сплошная заливка. Штриховка: bsHorizontal — горизонт...
Графические примитивы
Графические примитивы Любая картинка, чертеж или схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Таким образом, для того чтобы на экране п...
Линия
ЛинияВычерчивание прямой линии выполняет метод LineTo. Метод рисует линию из той точки, в которой в данный момент находится карандаш (эта точка называется текущей позицией карандаша или просто &qu...
Ломаная линия
Ломаная линия Метод Polyline вычерчивает ломаную линию. В качестве параметров методу передается массив типа TPoint, содержащий координаты узловых точек линии, и количество звеньев линии. Метод Pol...
Прямоугольник
Прямоугольник Метод Rectangle вычерчивает прямоугольник. В инструкции вызова метода надо указать координаты двух точек — углов прямоугольника. Например, оператор Canvas->Rectangle(10,10,50,50)...
Метод RoundRec вычерчивает прямоугольник
Рисунок 3.2. Метод RoundRec вычерчивает прямоугольник со скругленными углами  ...
Многоугольник
МногоугольникМетод Polygon вычерчивает многоугольник. Инструкция вызова метода в общем виде выглядит так: Canvas->Polygon(p,n) где р — массив записей типа TPoint, который содержит координаты ве...
Окружность и эллипс
Окружность и эллипс Нарисовать эллипс или окружность (частный случай эллипса) можно при помощи метода Ellipse. Инструкция вызова метода в общем виде выглядит следующим образом: Canvas->Ellipse(...
Значения параметров метода Ellipse
Рисунок 3.3. Значения параметров метода Ellipse определяют вид геометрической фигуры Вместо четырех параметров — координат диагональных углов прямоугольника — методу Ellipse можно передать один —...
Дуга
ДугаМетод Arc рисует дугу — часть эллипса (окружности). Инструкция вызова метода в общем виде выглядит так: Canvas->Arc(xl,yl,х2,у 2,х3,у3, х4,у4) Параметры x1, y1, х2, у2 определяют эллипс (ок...
Значения параметров метода Arc
Рисунок 3.4. Значения параметров метода Arc определяют дугу как часть эллипса (окружности)  ...
Сектор
Сектор Метод pie вычерчивает сектор эллипса или круга. Инструкция вызова метода в общем виде выглядит следующим образом: Canvas->Pie(x1,y1,х2,у2,х3,у3,х4,у4) Параметры x1, y1, x2, y2 определяют...
Значения параметров метода Pie
Рисунок 3.5. Значения параметров метода Pie определяют сектор как часть эллипса (окружности)  ...
Текст
ТекстВывод текста (строк типа Ansistring) на поверхность графического объекта обеспечивает метод TextOutA. Инструкция вызова метода TextoutA в общем виде выглядит следующим образом: Canvas->Tex...
Координаты области вывода текста
Рисунок 3.6. Координаты области вывода текста Шрифт, который используется для вывода текста, определяется значением свойства Font соответствующего объекта canvas. Свойство Font представляет собой...
Таблица 3 4 Свойства объекта TFont
Таблица 3.4. Свойства объекта TFont СвойствоОпределяетNameИспользуемый шрифт. В качестве значения следует использовать название шрифта (например, Arial)SizeРазмер шрифта в пунктах (points). Пункт...
Вывод текста
Рисунок 3.7. Вывод текста Иногда требуется вывести какой-либо текст после сообщения, длина которого во время разработки программы неизвестна. В этом случае необходимо знать координаты правой грани...
Точка
ТочкаПоверхности, на которую программа может осуществлять вывод графики, соответствует объект canvas. Свойство Pixels, представляющее собой двумерный массив типа TColor, содержит информацию о цвет...
Листинг 3 1
Листинг 3.1. График функции // обработка события OnPaint void__fastoall TForml::FormPaint(TObject *Sender) { Grafik(); } // обработка события OnResize void __fastcall TForml::FormResize(TObject *S...
График построенный по точкам
Рисунок 3.8. График, построенный по точкам Вызов функции Grafik выполняют функции Обработки событий OnPaint и OnResize. Функция TForm1:: Formpaint обеспечивает вычерчивание графика после появления...
Иллюстрации
ИллюстрацииНаиболее просто вывести иллюстрацию, которая находится в файле с расширением bmp, jpg или ico, можно при помощи компонента image, значок которого находится на вкладке Additional палитры...
Значок компонента Image
Рисунок 3.9. Значок компонента Image...
Таблица 3 5 Свойства компонента image
Таблица 3.5. Свойства компонента image СвойствоОписаниеPictureИллюстрация, которая отображается в поле компонентаWidth, HeightРазмер компонента. Если размер компонента меньше размера иллюстрации...
Чтобы выбрать иллюстрацию щелкните
Рисунок 3.10. Чтобы выбрать иллюстрацию, щелкните в строке Picture на кнопке стремя точками, затем в окне Picture Editor — на кнопке Load...
Диалоговое окно программы Просмотр иллюстраций
Рисунок 3.11. Диалоговое окно программы Просмотр иллюстраций Следующая программа (вид ее окна приведен на Рисунок 3.11, а текст — в листинге 3.2) использует компонент image для отображения JPG-илл...
Листинг 3 2
Листинг 3.2. Просмотр иллюстраций #include <jpeg.hpp> // обеспечивает работу с JPEG-иллюстрациями linclude <FileCtrl.hpp> // для доступа к функции SelectDirectory AnsiString aPath...
Битовые образы
Битовые образы Для формирования сложных изображений используют битовые образы. Битовый образ — это, как правило, небольшая картинка, которая находится в памяти компьютера. Сформировать битовый обр...
Таблица 3 6 Свойства объекта TBitmap
Таблица 3.6. Свойства объекта TBitmap СвойствоОписаниеHeight, WidthРазмер (ширина, высота) битового образа. Значения свойств соответствуют размеру загруженной из файла (метод LoadFromFile) и...
Присвоив свойству Transparent значение true можно скрыть фон
Рисунок 3.12. Присвоив свойству Transparent значение true, можно скрыть фон...
Листинг 3 3
Листинг 3.3. Загрузка и вывод битовых образов на поверхность формы void __fastcall TForml::FormPaint(TObject *Sender) { // битовые образы: небо и самолет Graphics::TBitmap *sky = new Graphics::TBi...
Фоновый рисунок и битовый образплитка
Рисунок 3.13. Фоновый рисунок и битовый образ-плитка, из которого он составлен Следующая программа показывает, как можно получить фоновый рисунок путем многократного вывода битового образа на пове...
Листинг 3 4
Листинг 3.4. Объявление битового образа и функции Background class TForml : public TForm { _published: void__fasteal1 FormCreate(TObject *Sender); void__fastcall FormPaint(TObject *Sender); void__...
Листинг 3 5
Листинг 3.5. Функции, обеспечивающие формирование и вывод фонового рисунка // обработка события OnCreate void __fastcall TForml::FormCreate(TObject *Sender) { back = new Graphics::TBitmap(); // со...
Мультипликация
МультипликацияПод мультипликацией обычно понимается движущийся и меняющийся рисунок. В простейшем случае рисунок может только двигаться или только меняться. Обеспечить перемещение рисунка довольно...
Метод базовой точки
Метод базовой точки Следующая простая программа показывает, как можно заставить двигаться изображение, сформированное из графических примитивов. Окно и форма программы приведены на Рисунок 3.14....
Окно и форма программы
Рисунок 3.14. Окно и форма программы На поверхности формы находится один-единственный компонент Timer, который используется для генерации последовательности событий, функция обработки которых обес...
Значок компонента Timer
Рисунок 3.15. Значок компонента Timer...
Таблица 3 7 Свойства компонента Timer
Таблица 3.7. Свойства компонента Timer СвойствоОпределяетNameИмя компонента. Используется для доступа к свойствам компонентаIntervalПериод возникновения события OnTimer, Задается в миллисекундахE...
Базовая точка (х0 у0) определяет положение объекта
Рисунок 3.16. Базовая точка (х0, у0) определяет положение объекта Перед тем как нарисовать кораблик на новом месте, функция обработки события от таймера стирает кораблик, нарисованный в процессе о...
Листинг 3 6
Листинг 3.6. Простая мультипликацияint х = -68, у = 50; // начальное положение базовой точки // рисует на поверхности формы кораблик void __fastcall TForml::Ship(int x, int y) { int dx=4,dy=4; //...
Использование битовых образов
Использование битовых образов В последнем примере изображение формировалось из графических примитивов. Теперь рассмотрим, как можно реализовать перемещение заранее подготовленного при помощи графи...
Форма программы "Полет над городом"
Рисунок 3.17. Форма программы "Полет над городом"...
Листинг 3 7
Листинг 3.7. Полет над городомvoid _fastcall TForml::FormCreate(TObject *Sender) { // загрузить фоновый рисунок из bmp-файла back = new Graphics::TBitmap(); back->LoadFromFile("factory.bmp...
Загрузка битового образа из ресурса программы
Загрузка битового образа из ресурса программы В программе "Полет над городом" (листинг 3.7) картинки (битовые образы) фона и объекта (самолета) загружаются из файлов. Такой подход не все...
Создание файла ресурсов
Создание файла ресурсов Файл ресурсов можно создать при помощи утилиты Image Editor, которая поставляется вместе с C++ Builder. Запустить Image Editor можно из C++ Builder, выбрав в меню Tools ком...
Чтобы создать файл ресурсов выберите
Рисунок 3.18. Чтобы создать файл ресурсов, выберите команду File | New | Resource File...
Файл ресурсов создан Теперь в
Рисунок 3.19. Файл ресурсов создан. Теперь в него надо поместить необходимые ресурсы Для того чтобы в файл ресурсов добавить новый ресурс, надо в меню Resource выбрать команду New | Bitmap (Новый...
В диалоговом окне Bitmap Properties
Рисунок 3.20. В диалоговом окне Bitmap Properties надо задать характеристики создаваемого битового образа...
Окно файла ресурсов после добавления ресурса Bitmap
Рисунок 3.21. Окно файла ресурсов после добавления ресурса Bitmap Bitmap 1 — это автоматически созданное имя ресурса, которое можно изменить, выбрав команду Resource | Rename. После этого можно пр...
Файл ресурсов images res содержит два битовых образа
Рисунок 3.22. Файл ресурсов images.res содержит два битовых образа Если нужная картинка уже существует в виде отдельного файла, то ее можно через буфер обмена (Clipboard) поместить в битовый образ...
Подключение файла ресурсов
Подключение файла ресурсов Для того чтобы ресурсы, находящиеся в файле ресурсов, были доступны программе, в текст программы надо поместить инструкцию (директиву), которая сообщит компилятору, что...
Листинг 3 8
Листинг 3.8. Загрузка битовых образов из ресурса  // подключить файл ресурсов, в котором находятся // необходимые программе битовые образы #pragma resource "images.res" void__fastc...
Кадры баннера
Рисунок 3.23. Кадры баннера...
Воспроизведение баннера в окне программы
Рисунок 3.24. Воспроизведение баннера в окне программы...
Листинг 3 9
Листинг 3.9. Баннер (baner.h, baner_.cpp)// baner.h class TForml : public TForm { published: TTimer *Timerl; void__fastcall FormCreate(TObject *Sender); void __fastcall TimerITimer(TObject *Sende...
Метод CopyRect копирует в область
Рисунок 3.25. Метод CopyRect копирует в область Rect1 поверхности Canvas1 область Rect2 с поверхности Canvas2  ...








Начало    


Книжный магазин