21.1. Класс Tcanvas
Основу графики в Delphi представляет класс Tcanvas – это холст (контекст GDI в Windows) с набором инструментов для рисования. Основные свойства холста:
• Property Pen:Tpen; – карандаш;
• Property Brush:Tbrush; – кисть;
• Property Font:Tfont; – шрифт;
• Property PenPos:Tpoint; – текущая позиция карандаша в пикселях относительно левого верхнего угла канвы;
• Property Pixels[x,y:Integer]:Tcolor. – массив цветов холста;
• Property CopyMode:TcopyMode; – свойство, которое определяет, как графический рисунок копируется в канву. Оно используется при вызове метода CopyRect и при копировании объектов TbitMap. Возможные значения этого свойства:
o cmBlackness | – заполнение области рисования черным цветом; |
o cmDest | – заполнение области рисования цветом фона; |
o cmMergeCopy | – объединение изображения на канве и копируемого изображения с помощью операции AND; |
o cmMergePaint | – объединение изображения на канве и копируемого изображения с помощью операции OR; |
o cmNotSrcCopy | – отображение на канве инверсного изображения источника; |
o cmNotSrcErase | – объединение изображения на канве и копируемого изображения с помощью операции OR и инвертированием полученного результата; |
o cmPatCopy | – копирование шаблона источника; |
o cmPatInvert | – объединение шаблона источника с изображением на канве с помощью операции XOR; |
o cmPatPaint | – объединение инверсного изображения источника с исходным шаблоном с помощью операции OR, а затем объединение результата этого действия с изображением на холсте, используя ту же логическую операцию; |
o cmSrcAnd | – объединение изображения источника и канвы с помощью операции AND; |
o cmSrcCopy | – перенос изображения источника на канву; |
o cmSrcErase | – инвертирование изображения на канве и объединение его с изображением источника с помощью операции AND; |
o cmSrcInvert | – объединение изображения на канве и источнике с помощью операции XOR. Отметим, что повторное объединение восстанавливает первоначальное изображение на канве. Это значение свойства CopyMode используется при создании игр, когда происходит движение объекта по фону; |
o cmSrcPaint | – объединение изображения на канве и источнике с помощью операции OR; |
o CmWhiteness | – заполнение области рисования белым цветом. |
Канва не является компонентом, но во многих компонентах является свойством. С помощью свойства Pixels все пиксели канвы представляются в виде двухмерного массива точек. Изменяя цвет пикселей, можно прорисовывать изображение по отдельным точкам.
Методы канвы:
Pгосеdure Агс(Х1, Y1, Х2, Y2, ХЗ, Y3, Х4, Y4: Integer); – чертит дугу эллипса в охватывающем его прямоугольнике (X1, Y1)– (Х2, У2). Начало дуги лежит на пересечении эллипса и луча, проведенного из его центра в точку (ХЗ, Y3), а конец – на пересечении с лучом из центра в точку (Х4, У4). Дуга чертится против часовой стрелки (рис.21.1,а);
Рис. 21.1. Параметры обращения к методам: а) – Аrс; б) – Сhоrd; в) – Рiе;
г) – RоundRect
Proсеdure Сhord(Х1, Y1, Х2, Y2, ХЗ, Y3, Х4, Y4:Integer) ; – чертит сегмент эллипса в охватывающем его прямоугольнике (XI, VI) – (Х2, У2). Начало дуги сегмента лежит на пересечении эллипса и луча, проведенного из его центра в точку (ХЗ, Y3), а конец – на пересечении с лучом из центра в точку (Х4, У4), Дуга сегмента чертится против часовой стрелки, а начальная и конечная точки дуги соединяются прямой (рис. 21.1,б);
Procedure CopyRect(Dest: Trect; Canvas: Tcanvas; Source: Trect); – копирует изображение Source канвы Canvas в участок Dest текущей канвы. При этом свойство CopyMode определяет различные эффекты копирования;
Pгосеdurе Draw(Х, Y: Integer; Graphic: ТGraphic); – осуществляет вывод на канву графического объекта Gгарhiс так, чтобы левый верхний угол объекта расположился в точке (X, Y);
Pгосеdure Е11iрsе(Х1, Y1, Х2, Y2: Integer); – чертит эллипс в охватывающем его прямоугольнике (X1, Y1) – (Х2, Y2), заполняет внутреннее пространство эллипса текущей кистью;
Pгосеdure FillRect(соnst Rect: Trect); – заполняет текущей кистью прямоугольную область Rect, включая ее левую и верхнюю границы, но не затрагивая правую и нижнюю границы;
Pгосеdure FloodFill(X, Y: Integer; Со1ог: ТСо1ог; FillStyle: TFillStyle); – производит заливку канвы текущей кистью. Заливка начинается с точки (X, У) и распространяется во все стороны от нее. Если FillStyle= fsSurface, заливка распространяется на все соседние точки с цветом Со1ог. Если FillStyle=fsBorder, наоборот, заливка прекращается на точках с этим цветом;
Pгосеdure FrameRect(соnst Rect:TRect) ; – очерчивает границы прямоугольника Rect текущей кистью толщиной в 1 пиксель без заполнения внутренней части прямоугольника;
Pгосedure LineТо (X, У: Integer); – чертит линию от текущего положения пера до точки (X, У);
Procedure МоvеТо(Х, У: Integer) ; – перемещает карандаш в положение (X, У) без вычерчивания линий;
Procedure Рiе(Х1, У1, Х2, У2, ХЗ, УЗ, Х4, У4: Integer); – рисует сектор эллипса в охватывающем прямоугольнике (X1, У1) – (Х2, Y2). Начало дуги лежит на пересечении эллипса и луча, проведенного из его центра в точку (ХЗ, УЗ), а конец – на пересечении с лучом из центра в точку (Х4, У4). Дуга чертится против часовой стрелки. Начало и конец дуги соединяются прямыми с ее центром (см. рис. 21.1,в);
Pгосedure Ро1уgоn (Роints: аггау оf ТРоint) ; – вычерчивает карандашом многоугольник по точкам, заданным в массиве Роints. Конечная точка соединяется с начальной, и многоугольник заполняется кистью. Для вычерчивания без заполнения используется метод Ро1уline;
Pгосedure Ро1у1inе (Роints: array оf ТРоint) ; – вычерчивает карандашом ломаную прямую по точкам, заданным в массиве Роimts;
Pгосedure Rectangle (X1, У1, Х2, У2: Integer); – вычерчивает и заполняет прямоугольник (X1, У1) – (Х2, У2). Для вычерчивания без заполнения используется методы FrameRect или Ро1уLine;
Prосedure ReFresh; – устанавливает в канве умалчиваемые шрифт, карандаш и кисть;
Pгосedure RoundRect (Х1, У1, Х2, У2, ХЗ, УЗ: Integer) ; – вычерчивает и заполняет прямоугольник (XI, У1) – (Х2, У2) со скругленными углами. Прямоугольник (X1, Y1) – (ХЗ, УЗ) определяет дугу эллипса для округления углов (рис.22.1,г);
Pгосedure StretchDraw (const Rect: TRect; Graphic: TGraphic ) ; – отображает и при необходимости масштабирует графический объект Graphic так, чтобы он полностью занял прямоугольник Rect;
Procedure ТехtОut (Х, У: Integer; const Техt: String) ; – выводит текстовую строку Техt так, чтобы левый верхний угол прямоугольника, охватывающего текст, располагался в точке (X, У);
Procedure ТехtRect (Rect: ТRect; X, У: Integer; const Техt: String) ; – выводит строку Техt так, чтобы левый верхний угол прямоугольника, охватывающего текст, располагался в точке (X, У). Если при этом какая–либо часть надписи выходит из границ прямоугольника Rect, она отсекается и не будет видна.
- Программирование в среде Delphi
- Программирование в среде Delphi
- 1. История развития вычислительной техники, системы счисления и единицы информации.................................................7
- 2. Структура персонального компьютера и операционные системы.........................................................................13
- 3. Основы алгоритмизации и работа в delphi..........................18
- 4. Базовые элементы delphi...................................................................26
- 5. Стандартные функции и подпрограммы................................30
- 6. Операторы delphi......................................................................................33
- 7. Операторы циклов....................................................................................35
- 18. Выделение памяти под объект и прародитель всех классов – tobject..........................................................................................84
- 19. Обработка исключительных ситуаций................................87
- 20. Основные классы и общие свойства компонентов...93
- 26. Технология com.....................................................................................129
- 1. История развития вычислительной техники, системы счисления и единицы информации
- 1.1. История развития вычислительной техники
- 1.2. Системы счисления
- 1.3. Единицы информации
- 2. Структура персонального компьютера и операционные системы
- 2.1. Структура персонального компьютера.
- 2.2. Операционные системы
- 3. Основы алгоритмизации и работа в delphi
- 3.1. Основы программирования
- 3.2. Программирование в среде Delphi
- 4. Базовые элементы delphi
- 4.1. Алфавит среды Delphi
- 4.2. Константы
- 4.3. Переменные
- 4.4. Основные типы переменных
- 4.5. Операции над переменными и константами
- 5. Стандартные функции и подпрограммы
- 5.1. Математические функции
- 5.2. Функции преобразования
- 5.3. Дополнительные системные подпрограммы и функции
- 6. Операторы delphi
- 6.1. Оператор присваивания
- 6.2. Оператор безусловной передачи управления
- 6.3. Условный оператор if
- 6.4. Оператор разветвления Case
- 6.5. Составной оператор
- 7. Операторы циклов
- 7.1. Оператор цикла For
- 7.2. Оператор цикла Repeat
- 7.3. Оператор цикла While
- 8. Работа с массивами
- 9. Работа со строками
- 9.1. Процедуры работы со строками
- 9.2. Функции работы со строками
- 10. Работа с записями
- 11. Процедуры и функции
- 12. Модуль unit
- 13. Работа со множествами
- 14. Работа с файлами
- 14.1. Текстовые файлы
- 14.2. Типированные файлы
- 14.3. Нетипированные файлы
- 15. Работа с файлами и каталогами
- 16. Динамические переменные и структуры данных
- 16.1. Динамические переменные
- 16.2. Работа со стеком
- 16.3. Работа со списками или очередями
- 16.4. Работа с деревьями
- 17. Основы объектно–ориентированного программирования
- 17.1. Объекты и классы
- 17.2. Области видимости класса
- 17.3. Свойства (Property) и инкапсуляция
- 17.4. Методы, наследование и полиморфизм
- 17.5. События (Events)
- 18. Выделение памяти под объект и прародитель всех классов – tobject
- 18.1. Выделение памяти под объект
- 18.2. Описание класса tObject
- 18.3. Операторы приведения типов классов
- 19. Обработка исключительных ситуаций
- 19.1. Два вида оператора Try
- 19.2. Программное создание исключительной ситуации
- 19.3. Основные исключительные ситуации
- 20. Основные классы и общие свойства компонентов
- 20.1. Класс tList
- 20.2. Класс tStrings
- 20.3. Общие свойства компонентов
- 21. Графические возможности delphi
- 21.1. Класс Tcanvas
- 21.2. Классы тGгарhic и тРicture
- 21.3. Классы tFont, tPen и tBrush
- 21.4. Работа с изображениями
- 22. Визуальные компоненты delphi
- 22.1. Компонент tBitBtn
- 22.2. Компоненты tDrawGrid и tStringGrid
- 22.3. Компонент tPageControl
- 22.4. Компонент tTimer
- 22.5. Компонент tGauge
- 22.6. Компонент tСolorGrid
- 23. Стандартные диалоговые окна и типовые диалоги
- 23.1. Стандартные диалоговые окна
- 23.2. Типовые диалоги
- 24. Форма, приложение и глобальные объекты
- 24.1. Форма и ее свойства
- 24.2. Объект Application
- 24.3. Глобальные объекты
- Объект ClipBoard
- Объект Screen
- Объект Printer
- 25. Межпрограммное взаимодействие
- 25.1. Обмен сообщениями
- 25.2. Динамический обмен данными
- 25.3. Совместное использование общей памяти
- 25.4. Каналы
- 25.5. Сокеты
- 26. Технология com
- 26.1. Интерфейс
- 27. Технология автоматизации
- 27.1. Основы ole Automation
- 27.2. Примеры использования серверов автоматизации
- 27.3. Компоненты ActiveX
- 28. Динамические библиотеки
- 28.1. Создание dll
- 28.2. Использование dll
- 28.3. Пример написания dll
- 29. Работа с базами данных
- 29.1. Основные определения
- 29.2. Взаимодействие приложения на Delphi с базами данных
- 29.3. Компоненты взаимодействия с базами данных
- If adoTable1.Locate(’fio,stag’,varArrayOf([’Иванов’,’10’]),[])Then …;
- 29.4. Работа с локальной базой данных
- 30. Основы языка sql
- 30.1. Составные части sql
- 30.2. Команда select
- 30.3. Пример использования запросов в Delphi
- 31. Создание собственных компонентов
- 32. Работа с реестром
- 33. Перспективы программирования в delphi
- Литература
- 220013, Минск, п.Бровки, 6