- •Система Pascal abc
- •Редактор
- •Горячие клавиши
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Программа прервана пользователем
- •Пошаговое выполнение программы
- •Окно отладки
- •Pascal abc Язык Pascal abc Структура программы
- •Идентификаторы и служебные слова
- •Выражения и операции
- •Арифметические операции
- •Операция @
- •Операции с указателями
- •Операции с множествами
- •Приоритет операций
- •Описание переменных и констант
- •Описание типов
- •Обзор типов
- •Все порядковые типы, а также типы boolean, real и complex называются простыми типами. Порядковые типы
- •Типы boolean, real и complex
- •Строковый тип
- •Массивы
- •Множества
- •Указатели
- •Процедурный тип
- •Эквивалентность типов
- •Неявное приведение типов
- •Явное приведение типов
- •Область действия идентификатора
- •Ввод и вывод. Форматы вывода
- •Оператор присваивания
- •Условный оператор
- •Составной и пустой операторы
- •Оператор выбора
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор вызова процедуры
- •Операторы break, continue и exit
- •Оператор with
- •Оператор безусловного перехода goto
- •Оператор try ... Except
- •Оператор try ... Finally
- •Оператор raise
- •Описание процедур и функций
- •Параметры процедур и функций
- •Локальные и глобальные переменные
- •Общие стандартные процедуры и функции
- •Стандартные процедуры и функции для работы со строками
- •Стандартные процедуры и функции для работы с файлами
- •Стандартные процедуры и функции для работы с памятью
- •Системные процедуры и функции
- •Стандартные константы
- •Обзор классов и объектов
- •Конструкторы и деструкторы
- •Свойства
- •Переменная Self
- •Наследование
- •Видимость членов класса
- •Переопределение методов
- •Приведение типов объектов
- •Операции is и as
- •Виртуальные методы и полиморфизм
- •Модуль crt
- •Модуль Timers
- •Модуль Sounds
- •Модуль Utils
- •Модуль PointRect
- •Модуль GraphAbc
- •Графические примитивы
- •Цветовые константы и функции для работы с цветом
- •Действия с пером
- •Действия с кистью
- •Действия со шрифтом
- •Действия с рисунками
- •Действия с графическим окном
- •Задание режимов вывода
- •Класс Picture
- •Описатели рисунков и класс Picture
- •Исполнитель Робот
- •Алгоритмизация
- •Алгоритм и его свойства
- •Способы описания алгоритмов
- •Линейные алгоритмы
- •Разветвляющиеся алгоритмы
- •Алгоритмы циклической структуры
- •Подчиненные алгоритмы
- •Системы программирования
- •Лабораторная работа № 1 Программирование линейных алгоритмов
- •Лабораторная работа № 2 Программирование разветвляющихся алгоритмов
- •Лабораторная работа № 4 Одномерные массивы - вектора
- •Литература Основная литература:
- •Дополнительная литература:
- •Лабораторная работа № 3 Программирование циклических алгоритмов
Класс Picture
Для работы с рисунками в модуле GraphABC используются либо описатели, либо объекты класса Picture.
Класс Picture описывает рисунок, хранящийся в оперативной памяти, и имеет следующий интерфейс:
type Picture=class constructor Create(w,h: integer); constructor Create(fname: string); constructor CreateFromRect(r: Rect); constructor CreateFromScreenBufferRect(r: Rect); destructor Destroy; procedure Load(fname: string); procedure Save(fname: string); procedure SetSize(w,h: integer); property Width: integer; property Height: integer; property Transparent: boolean; property NeedDestroy: boolean; function Handle: integer; function Intersect(p: Picture): boolean; procedure Draw(x,y: integer); procedure Draw(x,y,w,h: integer); procedure Draw(x,y: integer; r: Rect); procedure Draw(x,y,w,h: integer; r: Rect); procedure CopyRect(dst: Rect; p: Picture; src: Rect); procedure FlipHorizontal; procedure FlipVertical; end;
Конструкторы и деструкторы |
constructor Create(w,h: integer);
Создает объект класса Picture ширины w и высоты h. Рисунок может быть скопирован в него из прямоугольной области другого рисунка методом CopyRect. На рисунке может быть также произведено рисование вызовом любых процедур рисования после установки его в качестве поверхности рисования (метод SetDrawingSurface).
constructor Create(fname: string);
Создает объект класса Picture и загружает в него рисунок из файла fname (допустимые форматы файлов: .bmp, .gif, .jpg, .png). Рисунок с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Images\ каталога программы PascalABC.exe.
constructor CreateFromRect(r: Rect);
Создает объект класса Picture и копирует в него изображение из прямоугольника r на экране. Размер рисунка равен размеру прямоугольника.
constructor CreateFromScreenBufferRect(r: Rect);
Создает объект класса Picture и копирует в него изображение из прямоугольника r внеэкранного буфера. Размер рисунка равен размеру прямоугольника.
destructor Destroy;
Разрушает объект. Если NeedDestroy установлено в True, то рисунок, находящийся в объекте Picture, также разрушается.
Свойства |
property Width: integer;
Ширина рисунка.
property Height: integer;
Высота рисунка.
property Transparent: boolean;
Прозрачность рисунка. Если Transparent=True, то при выводе рисунка его фон не отображается. Фоновым считается цвет левого нижнего пиксела рисунка.
property NeedDestroy: boolean;
Определяет, должен ли рисунок разрушаться при вызове деструктора и метода Load. NeedDestroy обычно устанавливается в False, если несколько объектов класса Picture разделяют один рисунок.
Методы |
procedure Load(fname: string);
Загружает рисунок из файла с именем fname. Если NeedDestroy установлено в True, то рисунок, находившийся ранее в объекте Picture, разрушается. Рисунок с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Images\ каталога программы PascalABC.exe.
procedure Save(fname: string);
Сохраняет рисунок в файле с именем fname. Формат рисунка устанавливается расширением имени файла. Допустимые расширения: .bmp, .gif, .jpg, .png.
function Handle: integer;
Возвращает описатель рисунка.
procedure Draw(x,y: integer);
Выводит рисунок в позицию (x,y) графического окна.
procedure Draw(x,y,w,h: integer);
Выводит рисунок в позицию (x,y) графического окна, масштабируя его к размеру (w,h). Если w<0 или h<0, то выводится зеркальное отражение рисунка относительно вертикалоной или горизонтальной оси соответственно.
procedure Draw(x,y: integer; r: Rect);
Выводит часть рисунка, заключенную в прямоугольнике r, в позицию (x,y) графического окна.
procedure Draw(x,y,w,h: integer; src: Rect);
Выводит часть рисунка, заключенную в прямоугольнике r, в позицию (x,y) графического окна, масштабируя ее к размеру (w,h).
procedure CopyRect(dest: Rect; p: Picture; src: Rect);
Копирует в прямоугольник dest текущего рисунка часть рисунка p, заключенную в прямоугольнике src.
procedure FlipHorizontal;
Зеркально отображает картинку относительно горизонтальной оси симметрии.
procedure FlipVertical;
Зеркально отображает картинку относительно вертикальной оси симметрии.