Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

События в Delphi 3 страница

Объектно-ориентированное программирование | Достоинства ООП | События в Delphi 1 страница |


Читайте также:
  1. 1 страница
  2. 1 страница
  3. 1 страница
  4. 1 страница
  5. 1 страница
  6. 1 страница
  7. 1 страница

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

Каждый поток может создать другой поток и т.д. Потоки не могут существовать отдельно от процесса, т.е. каждый поток принадлежит какому-то процессу и этот поток выполняет код, только в адресном пространстве этого процесса. Иными словами, поток не может выполнить код чужого процесса.

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

22. Потоки.

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

Для того чтобы программа заработала, в нём создаётся поток. Любой процесс содержит в себе хотя бы один поток, и именно он отвечает за выполнение кода и получает на это процессорное время. Этим и достигается мнимая параллельность работы программ, или, как её еще называют, псевдопараллельность. Мнимая потому, что реально процессор в каждый момент времени может выполнять только один участок кода. Windows раздаёт процессорное время всем потокам в системе по очереди, тем самым создаётся впечатление, что они работают одновременно. Реально работающие параллельно потоки могут быть только на машинах с двумя и более процессорами.

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

Каждый поток может создать другой поток и т.д. Потоки не могут существовать отдельно от процесса, т.е. каждый поток принадлежит какому-то процессу и этот поток выполняет код, только в адресном пространстве этого процесса. Иными словами, поток не может выполнить код чужого процесса.

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

23. Процедуры и функции для преобразования данных.

Преобразование строки символов в числовое значение. 1. Процедура для преобразования строки в числовое значение:Val (Edit.Text: string, R: integer (real), code: integer),где Edit.Text – строка символов, введенная в компонент; R – результатпреобразования процедурой Val (переменная целого либо вещественноготипа); Code – код преобразования процедуры Val (переменная целого типа, равная 0, если преобразование выполнено верно, либо 1, если преобразование невозможно). Например: Val (Edit1.Text, r, code). 2. Функция для преобразования строки в целое число:

StrToInt(Edit.Text: string): integer

<!--[if!supportLineBreakNewLine]-->

<!--[endif]-->

Например: L:=StrToInt(Edit1.Text) 3. Функция для преобразования строки в вещественное число: StrToFloat(Edit.Text: string):real Например: L:=StrToFloat(Edit1.Text) Преобразование числового значения в строку символов 1. Процедура для преобразования числа в строку:Str (R: integer (real), Label.Caption: string), где Label.Caption – строка символов для вывода; R – переменная целого либо вещественного типа; Например:Str(R:6:3, Label.Caption) 2. Функция для преобразования целого числа в строку:IntToStr (K: integer): string Например: Label1.Caption:= ‘Результат’ + IntToStr(K) 3. Функция для преобразования вещественного числа в строку: FloatToStr (K: Extended): string Например: Label1.Caption:= FloatToStr(K) 4. Функция для преобразования вещественного числа в строку в формате: FloatToStrF (K: Extended, F, n,m: byte): string, где F – формат вывода изображения числового значения (ffGeneral – универсальный, ffFixed – с фиксированной точкой (рекомендуемый),

ffExponent – научный, ffNumber – с разделителями групп разрядов, ffCurrency – финансовый), n – ширина поля для вывода числа, m – количество цифр после десятичной точки. Например: Label1.Caption:=’k=’+FloatToStrF(k,ffFixed,6,3) Программа может получить данные из окна ввода или поля редактирования (Edit).

24. Компонент Memo, назначение, правила использования, основные свойства компонента. Ввод и вывод числовых данных с помощью компонента Memo.

Компонент Memo представляет собой окно редактирования многострочного текста.

Компонент Delphi Memo это простой текстовый редактор. Delphi Memo позволяет вводить многострочный текст с клавиатуры, загружать его из файла, редактировать и сохранять в файл текстового формата. Простота текстового редактора компонента Delphi Memo заключается в том, что текстовый редактор Delphi Memo не обладает возможностями форматирования содержещегося в нём текста. Это означает, что все атрибуты выбранного шрифта будут относиться ко всему тексту.

Текст в компоненте Delphi Memo размещается построчно. Поэтому имеется доступ к каждой строке текста отдельно. Строки в редакторе Delphi Memo являются объектами Lines[i] типа String, где i - номер строки, отсчитываемый от нуля. Объект Lines[i] доступен и для чтения, и для записи. Соответственно, текст в компоненте Memo можно редактировать не только с клавиатуры, но и программно:

var S: String;

begin

Memo1.Lines[3]:='Четвёртая строка по счёту';

S:=Memo1.Lines[3];

end;

Естественно, для успешного присвоения текста определённой строке необходимо, чтобы эта строка физически существовала! То есть, данным способом можно только редактировать текст. Новую строку создать таким способом невозможно. Для создания новых строк служат методы

Add()

Insert()

Метод Add() добавляет новую строку в конец, а метод Insert() внедряет новую строку после указанной, для чего метод Insert() имеет соответствующий параметр:

begin

Memo1.Lines.Add('Это будет последняя строка');

Memo1.Lines.Insert(2, 'Эта строка будет четвёртой'); //Так как отсчёт идёт от нуля!

end;

Компонент Delphi Memo позволяет получить доступ к тексту как целому. Свойство Text типа String является текстом, содержащимся в редакторе, в виде одной строки. Необходимо учитывать, что эта строка также будет включать в себя и непечатаемые символы конца строки #13 и символы переноса строки #10. Кстати, чтобы продолжить текст с новой строки, необходимо использовать последовательно оба этих символа:

Memo1.Text:='Предыдущий текст'+#13+#10+'Это уже новая строка';

25. Методы класса Tstrings. Компонент StringGrid, назначение, основные свойства компонента: RowCount, ColCount, ScrollBar, DefaultColWidth, DefaultRowHeight, FixedCol, FixedRow,Cells. Использование компонента StringGrid для ввода вывода массивов.

Свойства объекта TStrings

count — это свойство, которое вы можете только читать. Здесь хранится количество строк, содержащихся в объекте. strings — здесь хранится набор строк. К любой строке можно получить доступ, написав такую конструкцию:

Переменная:=Имя_Объекта.Strings[Номер строки];

Имя_0бъекта.Strings[Номер строки]:= Переменная;

Первая строка кода запишет в переменную содержимое указанной строки. Вторая строка, наоборот, запишет содержимое переменной в указанную строку. Запомните, что строки в этом объекте нумеруются с нуля. Text — в этом свойстве хранятся все строки в виде одной целой строки, разделенные кодами конца строки и перевода каретки.

Основные Методы объекта TStrings

Add (Строка) — метод добавляет строку, указанную в качестве параметра, в конец набора строк объекта. Возвращает номер, под которым добавлена новая строка.

Append (Строка) — этот метод тоже добавляет строку, указанную в качестве параметра, в конец набора строк объекта. Он ничего не возвращает.

AddStrings (Набор строк типа TStrings) — метод добавляет ВС6 Строки ИЗ другого объекта типа TStrings.

Assign — метод присваивает вместо своего набора строк новый, указанный в качестве параметра.

clear — метод удаляет все строки из объекта.

Delete (номер строки) — метод позволяет удалить строку под указанным номером.

Equals (Набор строк типа TStrings) — метод допускает сравнение собственного набора строк с указанным в качестве параметра. Если наборы равны, то метод вернет true, иначе false.

Exchange (Номер!, Номер2) — метод меняет местами строки указанных номеров.

Get (номер строки) — метод возвращает строку указанного номера.

indexdf(Строка) — этот метод позволяет найти указанную в качестве пара метра строку. Если такая строка существует в наборе, то метод вернет ее индекс, иначе — 1.

insert (Номер, Строка) — метод позволяет вставить в набор новую строку под указанным номером.

LoadFromFile(HMH файла) — данный метод используется, чтобы загрузить набор строк из указанного текстового файла.

SaveToFile(Имя файла) — метод обеспечивает сохранение набора строк в указанном текстовом файле.

Move (Номер!, Номер2) — метод перемещает строку под номером 1 на место с номером 2.

Таблица строк — компонент StringGrid

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

Компонент StringGrid предназначен в первую очередь для отображения таблиц текстовой информации. Основные свойства компонента, определяющие отображаемый текст: Cells[ACol, ARow: Integer]: string Строка, содержащаяся в ячейке с индексами столбца и строки ACol и ARow. Задавать тексты можно программно или по отдельным ячейкам, или сразу по столбцам и строкам с помощью методов класса TStrings

Свойства компонента StringGrid:

ColCount - Количество колонок таблицы; RowCount - Количество строк таблицы; DefaultColWidth - Ширина колонок таблицы; DefaultRowHeight - Высота строк таблицы; FixedCols - Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте; FixedRows - Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте; Cells - Соответствующий таблице двумерный массив. Ячейке таблицы, находящейся на пересечении столбца с номером col и строки с номером row, соответствует элемент cells [col] [row].

26. События. Переменные и их типы.

Переменные всегда будут содержать только значения, указанного типа. Если вводить значение, другого типа, которое можно изменить так, чтобы оно соответствовало указанному типу переменной, программа выполнит такое превращение - это называется приведением типов. Например, если в переменную, объявленную как Integer записать значение 4,8 то это значение округляется до ближайшего целого числа и храниться в переменной будут значение 5. Если это невозможно - будет выведено сообщение об ошибке.

Наиболее часто используемые типы переменных: Integer –2147483648..2147483647 Int64 –2^63..2^63–1 Byte 0..255 Real 5.0 x 10^-324.. 1.7 x 10^308 15-16 Максимальное число в цифре. Boolean содержит 2 байта – это логическое значение True (правда)/False (ложь). Date содержит 8 байтов – это дата. String – переменная строка. Длину можно указать: Dim str As String*50 (строка размером в 50 символов). Variant – содержит 16 байт и любые характеристики, если неизвестен тип переменной. Type – пользовательский тип.

27. Константы, выражения и функции. Перегрузка функций.

Константа – величина, не изменяющая своего числового или символьного значения в течение всей программы. Блок описания Const может располагаться в любом месте программы, таких блоков может быть несколько или не быть вообще.Константы вводятся для удобства программиста. Компилятор запоминает значения всех простых констант и при трансляции программы заменяет все имена констант их значениями. Именно поэтому константы не могут стоять слева в операторах присваивания, так как не могут изменять значения в ходе выполнения программы.

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

Порядок вычисления выражений следующий:

- Вычисляются значения операндов

- Выполняются операции арифметические, сравнения, логические.

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

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

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

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

Перегруженная операция может быть определена как компонент класса; в этом случае она имеет один параметр или вообще не имеет параметров. У дружественной перегруженной операции может быть один или два параметра. Поэтому бинарные операции следует перегружать как дружественные.

 

28. Динамические данные. Указатели. Ссылочный тип. Динамические массивы.

Средства создания динамических структур данных, которые позволяют во время выполнения программы:

-образовывать объекты; -выделять для них память; -уничтожать, когда в них исчезает необходимость.

Динамические структуры – это данные, размер которых может меняться во время работы программы. В Delphi есть массивы, которые так и называются динамическими. Динамический массив есть контейнер, содержащий определенное число данных, которые могут быть записаны либо извлечены для каких-нибудь с ними действий. Проще говоря, это лимитированный список различных значений одной переменной (Integer, String и т.д.), каждый из которых можно затребовать простым указанием порядкового номера. Указатель представляет из себя переменную, содержащую адрес другой переменной. Точнее говоря, указатель содержит адрес начала другой переменной (которая, в принципе, может занимать достаточно большой объем памяти).Указатели бывают типизированные и нетипизированные. Типизированный указатель — это указатель на переменную определенного типа, например, целого, строкового или типа массива Нетипизарованный указатель — это адрес первого байта области памяти, в которой может размещаться любая информация вне зависимости от ее типа.

CTS CLR – это сокращение от Common Type System. CTS включает предопределенные, базовые.NET типы, которые доступны в любом.NET языке. Это означает, что integer больше не определяется каждым компилятором, а встроен в CTS и поэтому integer полностью одинаков во всех.NET языках.

CTS не ограничен только integer, а включает много других типов. CTS разделяет типы на две базовые категории: значения и ссылочные типы.

Типы значений - это типы, которые записываются в стеке. Вы должны быть знакомы с термином – простой или порядковый типы. Типы значений включают integers, bytes и другие примитивы, структуры и перечисления.

Ссылочные типы – это типы, значения которых сохраняются в куче, и ссылки используются для доступа к ним. Ссылочные типы включают objects, interfaces и pointers.

 

29. Организация ссылок на ресурсы Internet, связей между компьютерами.

Компьютерная сеть (Computer NetWork) – это совокупность компьютеров и других устройств, соединенных линиями связи и обменивающихся информацией между собой в соответствии с определенными правилами – протоколом.

Основная цель сети – обеспечить пользователей потенциальную возможность совместного использования ресурсов сети. Ресурсами сети называют информацию, программы и аппаратные средства.

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

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

Ячеистая топология. Даная топология характерна для глобальных сетей.

Общая шина. Дешевый и простой способ, недостатки – низкая надежность. Дефект кабеля парализует всю сеть.

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

Топология Звезда – каждый компьютер подключается к концентрату (хаб). Главное преимущество большая надежность. Недостаток – высокая стоимость оборудования и ограниченное кол-во узлов в сети (т.к. порта ограничены)

Иерархическая Звезда – топология типа звезды, но используется несколько концентратов, иерархически соединенных между собой связями типа звезда. Самый распространенный способ связей как в локальных сетях, так и в глобальных.

30. Объявления переменных. Встраиваемые функции.

Для хранения различных данных в языках программирования используют переменные. Переменной называется область памяти, имеющая имя, которое иначе называют идентификатором.Переменные объявляют в операторе описания. Оператор описания состоит из спецификации типа и списка имён переменных, разделённых запятой. В конце обязательно должна стоять точка с запятой. Команда объявления переменных в языке Delphi:

var имя_переменной: тип_переменной;

Слово var - ключевое. Именем может быть любой идентификатор, если он не был описан ранее и не является одним из ключевых или зарезервированных слов языка Delphi. Если нужно описать несколько переменных одного типа, то их перечисляют, отделяя запятой: var A, B, C: Integer;

Если несколько описаний следуют друг за другом, то ключевое слово var повторно можно не указывать:

var A, B: Integer;

C, D: String;

Встраиваемые функции

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

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

- является конструктором или деструктором класса;

- является методом класса и помечена как виртуальная, динамическая или как обработчик сообщения;

- является методом класса и обращается к другому методу с более ограниченной областью видимости;

-содержит ассемблерную вставку;

 

31. Интерфейсы и реализация.

Интерфейс (от лат. inter — между и лат. face — поверхность) — это семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом. Интерфейс определяет границу взаимодействия между классами или компонентами, специфицируя определенную абстракцию, которую осуществляет реализующая сторона. В отличие от многих других видов интерфейсов, интерфейс в ООП является строго формализованным элементом объектно-ориентированного языка и, в качестве семантической конструкции, широко используется кодом программы.

Реализация методов интерфейса. Класс, который реализует интерфейс, нужен, чтобы обеспечить реализацией каждый метод, объявленный в интерфейсе. Реализация может быть обеспечена или явным объявлением или в соответствии с наследованием от предка класса.

Вариантов реализаций здесь несколько:

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

- Явное разрешение неоднозначности. Вариантом этого решения является явное переименование для совпадающих по именам наследуемых или реализуемых методов

- Общая реализация одноимённых методов. Хорошо подходит для случаев, когда одноимённые методы разных интерфейсов идентичны по предполагаемой функциональности.

В Delphi интерфейсы были введены для поддержки COM технологии фирмы Microsoft.

Интерфейсы в Delphi напоминают классы. Как все классы являются наследниками класса TObject, так и все интерфейсы происходят от интерфейса IUnknown, соответствующего стандартному одноимённому COM-интерфейсу.

Пример объявления интерфейса:

IMyInterface = interface

procedure DoSomething;

end;

Для того, чтобы объявить о реализации интерфейсов, в описании класса необходимо указать их имена в скобках после ключевого слова class, после имени класса-предка. Так как интерфейс — это контракт, который нужно выполнить, программа не компилируется пока в реализующем классе не будет реализована procedure DoSomething;

Вышеупомянутая ориентированность интерфейсов Delphi на технологию COM привела к некоторым неудобствам. Дело в том, что интерфейс IUnknown (от которого наследуются все остальные интерфейсы) уже содержит три метода: QueryInterface,_AddRef, _Release, следовательно, любой класс, реализующий любой интерфейс, обязан реализовать эти методы, даже если интерфейс и класс не имеют никакого отношения к COM.

Пример класса, реализующего интерфейс

TMyClass = class(TMyParentClass, IMyInterface)

procedure DoSomething;

function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;

function _AddRef: Integer; stdcall;

function _Release: Integer; stdcall;

end;

Программист должен правильно реализовать методы QueryInterface,_AddRef, _Release. Чтобы избавиться от необходимости писать стандартные методы, предусмотрен библиотечный класс TInterfacedObject — он реализует три вышеупомянутых метода и любой класс, наследуемый от него и его потомков, получает эту реализацию:

Пример класса — наследника TInterfacedObject

TMyClass = class(TInterfacedObject, IMyInterface)

procedure DoSomething;

end;

Недостатком такого решения является ограничение на структуру дерева классов: невозможно унаследовать класс, реализующий интерфейс, от какого-либо другого своего класса.

 

32. Свойство Canvas. Назначение, свойства объекта Canvas.

Canvas не является компонентом, но поскольку многие компоненты, в частности, формы, имеют канву и канва предоставляет возможность выводить различную графическую информацию. Канва представляет собой область компонента, на которой можно рисовать или отображать готовые изображения. Она содержит свойства и методы, существенно упрощающие графику Delphi.

В предыдущих главах мы уже встречались с графикой Delphi и немного рисовали. Когда мы делали это, то обращались к объекту Canvas. Практически у всех компонентов Delphi есть это объектное свойство. Почему объектное? Да потому, что Canvas имеет тип объекта TCanvas. To есть в нашем компоненте за рисование отвечает объект. Таким образом, если компонент поддерживает рисование, то у него обязано быть такое свойство. Canvas в переводе с английского означает холст. Получается, что каждый компонент — это холст, на котором нарисовано изображение компонента. Взглянем на кнопку. На самом деле это не кнопка, а холст, на котором нарисованы изображения кнопки и текста. Когда вы щелкаете кнопкой мыши по кнопке, изображение изменяется и приобретает вид нажатой кнопки.

Графика Windows действительно представляет рисование на холсте. А для этого необходимы две вещи — карандаш для рисования (реп) и кисть для закраски (Brush). Именно такие свойства и присутствуют у объекта canvas. Карандаш используется для рисования линий и контуров, а кисть используется для закраски замкнутых областей; У обоих есть свои свойства (цвет,тип и т. д.),

Свойство объектов Canvas

У ряда объектов из библиотеки визуальных компонент есть свойство Canvas (канва), которое предоставляет простой путь для рисования на них. Эти объекты - TBitmap, TComboBox, TDBComboBox, TDBGrid, TDBListBox, TDirectoryListBox, TDrawGrid, TFileListBox, TForm, TImage, TListBox, TOutline, TPaintBox, TPrinter, TStringGrid. Canvas является в свою очередь объектом, объединяющим в себе поле для рисования, карандаш (Pen), кисть (Brush) и шрифт (Font). Canvas обладает также рядом графических методов: Draw, TextOut, Arc, Rectangle и др. Используя Canvas, Вы можете воспроизводить на форме любые графические объекты - картинки, многоугольники, текст и т.п. без использования компонент TImage,TShape и TLabel (т.е. без использования дополнительных ресурсов), однако при этом Вы должны обрабатывать событие OnPaint того объекта, на канве которого Вы рисуете. Рассмотрим подробнее свойства и методы объекта Canvas.

Свойства Canvas:

Brush -кисть, является объектом со своим набором свойств:

Bitmap- картинка размером строго 8x8, используется для заполнения (заливки) области на экране.

Color - цвет заливки. Style - предопределенный стиль заливки; это свойство конкурирует со свойством Bitmap - какое свойство Вы определили последним, то и будет определять вид заливки. Handle - данное свойство дает возможность использовать кисть в прямых вызовах процедур Windows API. ClipRect - (только чтение) прямоугольник, на котором происходит графический вывод. CopyMode- свойство определяет, каким образом будет происходить копирование (метод CopyRect) на данную канву изображения из другого места: один к одному, с инверсией изображения и др. Font - шрифт, которым выводится текст (метод TextOut). Handle - данное свойство используется для прямых вызовов Windows API. Pen - карандаш, определяет вид линий; как и кисть (Brush) является объектом с набором свойств: Color - цвет линии. Handle - для прямых вызовов Windows API. Mode - режим вывода: простая линия, с инвертированием, с выполнением исключающего или и др. Style - стиль вывода: линия, пунктир и др. Width - ширина линии в точках. PenPos - текущая позиция карандаша, карандаш рекомендуется перемещать с помощью метода MoveTo, а не прямой установкой данного свойства. Pixels - двухмерный массив элементов изображения (pixel), с его помощью Вы получаете доступ к каждой отдельной точке изображения.

33. Основные методы класса Tcanvas для программного построения изображений.

Класс TCanvas Этот класс — сердцевина графической подсистемы Delphi. Он объединяет в себе и "холст" (контекст конкретного устройства GDI), и "рабочие инструменты" (перо, кисть, шрифт), и даже "подмастерьев" (набор функций по рисованию типовых геометрических фигур).

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

Основные методы:

procedure Arc- Метод рисует сегмент эллипса. procedure Chord- Рисует хорду и заливает отсекаемую ею часть эллипса. procedure Ellipse- Рисует и закрашивает эллипс, вписанный в прямоугольник. procedure LineTo- Проводит линию текущим пером из текущей точки

procedure MoveTo- Перемещает текущее положение пера. procedure FillRect- Производит заливку прямоугольника. procedure FrameRect- Осуществляет рисование контура прямоугольника.

Методы для рисования простейшей графики - Arc, Chord, LineTo, Pie, Polygon, PolyLine, Rectangle, RoundRect. При прорисовке линий в этих методах используются карандаш (Pen) канвы, а для заполнения внутренних областей - кисть (Brush).

Методы для вывода картинок на канву - Draw и StretchDraw, В качестве параметров указываются прямоугольник и графический объект для вывода (это может быть TBitmap, TIcon или TMetafile). StretchDraw отличается тем, что растягивает или сжимает картинку так, чтобы она заполнила весь указанный прямоугольник (см. пример к данному уроку).

Методы для вывода текста - TextOut и TextRect. При выводе текста используется шрифт (Font) канвы. При использовании TextRect текст выводится только внутри указанного прямоугольника. Длину и высоту текста можно узнать с помощью функций TextWidth и TextHeight.

 

34. Построение изображений в DELPHI: компоненты Bevel, Shape, назначение, свойства.

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

Shape - фигура. Компонент, который позволяет вставлять в окно правильную геометрическую фигуру - прямоугольник, эллипс, окружность и т. п. Компонент Shape только условно может быть отнесен к средствам отображения графической информации, поскольку просто представляет собой различные геометрические фигуры, соответствующим образом заштрихованные. Основное свойство этого компонента — Shape (форма), которое может принимать значения: stRectangle - прямоугольник; stRoundRect - прямоугольник со скругленными углами; stEllipse – эллипс; stSquare – квадрат; stRoundSquare - квадрат со скругленными углами;


Дата добавления: 2015-07-25; просмотров: 57 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
События в Delphi 2 страница| События в Delphi 4 страница

mybiblioteka.su - 2015-2024 год. (0.029 сек.)