Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

План заняття. Структурированные типи данных




Структурированные типи данных

 

Структурированные типы данных определяют наборы одно­типных или разнотипных элементов. Типы элементов образуются из других типов (простых, структурированных и др.).

Структурированные типы, как правило, содержат более одного значення и формально могут рассматриваться как некий сложный набор, состоящий из данных простых типов. Элементами данных структурированных типов можно манипулировать как по отдель­ности, так и вместе. Кроме того, в Object Pascal предусмотрена возможность вложения структурных типов друг в друга, т.е. структурированный тип может, в свою очередь, содержать данные структурированного типа. При зтом допускается произвольная глубина вложенности. Однако суммарная длина любого из структурированных типов не должна превышать 2 Гбайт.

В Object Pascal можно выделить четыре структурированннх типа:

• массивы;

• записи;

• множества;

• файли.

При обьявлении структурированного типа можно использо­вать зарезервированное слово packed (упакованный). В стан­дартом Pascal зто слово давало команду компилятору по воз­можности экономить память, отводимую под злементы структу­рированного типа. Однако в Object Pascal оно не оказывает никакого действия, так как упаковка и распаковка данных здесь производится автоматически, где это возможно. Таким образом, компилятор фактически игнорирует packed.

Контрольні питання

1. Навести поняття структурованих типів даних Delphi

2. Охарактеризувати принципи застосування даного типу даних


САМОСТІЙНА РОБОТА СТУДЕНТА

ЗМІСТОВИЙ МОДУЛЬ 2: ПРОЦЕДУРНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ. ПРОГРАМУВАННЯ ГРАФІКИ

ТЕМА 2.2: ГРАФІКА, МУЛЬТИМЕДІЯ ТА ДРУК

 

Самостійне заняття №17 – Малювання

1. Огляд властивостей, подій та методів об’єкта Canvas

2. Огляд поняття кольорова константа

3. Характеристика об’єктів TBitmap, TComboBox, TDBComboBox, TDBGrid, TDBListBox, TDirectoryListBox, TDrawGrid, TFile-ListBox, TForm, Tlmage, TListBox, TOutline, TPaintBox, TPrinter, TStringGrid.

 

В Delphi существуют такие классы для использования графиче­ских средств Windows: TCanvas (холст, канва), TFont (шрифт), ТРеп (перо), TBrush (кисть).

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

Для выполнения операций рисования необходимо использо­вать класс TCanvas.

Объект Canvas представляет собой поверхность рисования для объектов, которые прорисовывают свое собственное изобра­жение. Стандартные оконные элементы управления, такие, как однострочный редактор или список, не требуют холста, так как они рисуются посредством Windows.

Использование свойств, событий и методов объекта Canvas обеспечивает возможность:

■ создания изображений с помощью специальных объектов, таких, как кисть, перо и шрифт;

■ рисования и заливки различных фигур или линий;

■ вывода текста в графическом режиме;

■ вывода графических изображений;

■ программирования реакции на изменения в текущем изо­бражении.

С помощью его свойств и методов можно рисовать на поверхно­сти видимых объектов, которые включают этот класс и, соответст­венно, имеют свойство Canvas. Это, например, такие объекты, как TBitmap, TComboBox, TDBComboBox, TDBGrid, TDBListBox, TDirectoryListBox, TDrawGrid, TFile-ListBox, TForm, Tlmage, TListBox, TOutline, TPaintBox, TPrinter, TStringGrid.

Свойство Canvas представляет собой объект, который объеди­няет в себе поле для рисования и объекты пера (Реп), кисти (Brush) и шрифта (Font). При помощи объекта Canvas можно воспроизво­дить на форме любые графические объекты - картинки, многоуголь­ники, текст и т.п. без применения классов Tlmage, TShape и TLabel (что позволяет избавиться от использования дополнитель­ных ресурсов), однако при этом необходимо обрабатывать событие OnPaint того объекта, на канве которого производится рисование.

Ниже будут подробно рассмотрены свойства объекта Canvas.

Свойство Brush (тип TBrush) представляет собой объект кисти со своим набором свойств, которые приведены в табл. 10.1.

Свойство ClipRect (тип TRect) определено только для чте­ния и является прямоугольником, на котором происходит графи­ческий вывод.

Свойство CopyMode (тип TCopyMode) задает, каким образом будет происходить копирование изображения (с помощью метода CopyRect) на канву: один к одному, с инверсией изображения и др.

Свойство Font (тип TFont) определяет параметры шрифта, ко­торым выводится текст на холсте. Свойства, перечисленные в табл. 10.2, позволяют устанавливать различные параметры шрифта.

Свойство PenPos (тип TPoint) определяет текущую пози­цию пера. Рекомендуется перемещать перо с помощью метода MoveTo, а не прямой установкой данного свойства.

Свойство Pixels [X, Y: Integer] (тип TColor) явля­ется двухмерным массивом элементов изображения (пикселей), с помощью которого можно получить доступ к каждой отдельной точке изображения и определить ее цвет.

Здесь имеет смысл более подробно рассказать о классах TColor, TBrushStyle, TFontStyle, TPenStyle и TPenMode, которые упоминались в табл. 10.1-10.3.

В процессе рисования с использованием методов объекта Canvas требуется задавать цвета линий, текста и заливки, что делается путем установки свойства Color объектов пера, шрифта и кисти соответственно. Для задания определенного цвета приме­няются специальные цветовые константы. Существует большое количество таких констант, в чем можно убедиться, раскрыв в Инспекторе объектов список цветов в поле справа от свойства Color любого из компонентов, например Form. В качестве ос­новных можно выделить одиннадцать цветовых констант, список которых приведен ниже:

clBlack - черный цвет;

clMaroon - коричневый цвет;

clGray - серый цвет;

clBlue - синий цвет.

с1 Aqua - голубой цвет;

clGreen - темно-зеленый цвет;

clLime - светло-зеленый цвет;

clFuchsia - фиолетовый цвет;

clRed - красный цвет;

clYellow - желтый цвет;

clWhite - белый цвет.

■ Класс TPenStyle используется для того, чтобы задавать тип линий при использовании различных графических методов. Свой­ство Style (тип TPenStyle) объекта пера Реп может прини­мать одно из значений, приведенных в табл. 10.4.

Необходимо дополнительно пояснить различие между сплош­ной и внутренней сплошной линиями. Разница между этими дву­мя стилями проявляется только в том случае, когда толщина ли­нии больше 1. Если свойству Style объекта пера Реп установить значение psInsideFrame, то фигура будет полностью вписана в заданных координатах при рисовании графическими методами, то есть внешняя граница линии будет точно вписываться в заданные границы. Если же это свойство будет иметь значение psSolid, то линия (толщина которой больше 1) будет разделена пополам, и одна ее половина окажется внутри заданных границ, а другая по­ловина - за пределами этих границ.

■ Следует также помнить о том, что штриховые и пунктирные линии нельзя использовать, если толщина линии больше 1.

■ Стиль заливки фигур при использовании графических методов определяется свойством Style (тип TBrushStyle) объекта Brush. Все возможные значения данного свойства и типы залив­ки приведены в табл. 10.5.

■ Вид шрифта, которым будет выводиться текст, определяется установкой нескольких параметров: название шрифта, стиль, раз­мер. Стиль шрифта задается с помощью свойства Style (тип TFontStyle) объекта Font. Возможные стили оформления шрифтов отображены в табл. 10.6.

 

Объект пера Pen имеет важное свойство Mode (тип ТРеп-Mode), которое определяет различные способы комбинирования цветов фона с цветами различных точек, линий и фигур, рисуемых с использованием графических методов. Все возможные режимы наложения пикселей в процессе рисования приведены в табл. 10.7

 

Следует обратить внимание еще на один момент. В табл. 10.7 речь идет только о цвете пера (класс TPenColor). Однако всё вышеперечисленное также относится и к цвету заливки (класс TBrushColor). Другими словами, как цвет пера, так и цвет за­ливки комбинируются с цветом фона в соответствии с заданным режимом рисования.

По сути, свойство Mode пера Реп определяет режим перекры­тия и наложения различных графических объектов. Рассмотрим примеры перекрытия двух прямоугольников в различных режи­мах (см. табл. 10.8). Для левого прямоугольника свойству Color кисти Brush задается значение clBtnShadow {Тень кнопки), для правого - clBtnFace {Поверхность кнопки). В большинстве представленных в таблице случаев используется белый фон. Ис­ключением являются те примеры, когда результат наложения не виден на белом фоне. В этом случае применяется темный фон.

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

 

 

По умолчанию в Delphi установлен режим ртСору, т.е. режим копирования, при котором в процессе рисования не происходит никакого комбинирования цветов при наложении пикселей друг на друга. В таком режиме пиксели рисуемых линий и фигур зати­рают все расположенные под ними точки, что видно из табл. 10.8. Этот режим рисования используется достаточно часто, однако иногда возникает необходимость применения других методов, что обуславливается конкретными условиями решаемой задачи.

Определенный интерес представляют режимы pmMask {Мас­ка) и pmMerge {Поглощение), работу которых лучше всего про­демонстрировать на наиболее ярком примере с использованием черного и белого цветов.

Пусть необходимо на поверхности рисования изобразить неко­торую фигуру. Если цвет фона будет белым, а цвет заливки черным, то при использовании режима pmMask будет нарисована черная фигура на белом фоне, а при использовании режима pmMerge эта фигура будет заливаться цветом фона и просто не будет видна. Ес­ли же цвет фона выбрать черным, а цвет заливки - белым, то ре­зультат будет прямо противоположным, то есть в режиме pmMask фигура будет заливаться цветом фона и не будет видна на поверх­ности рисования, а в режиме pmMerge белая фигура будет отобра­жена на черном фоне.

Следует особо отметить режим pmXor (исключающее ИЛИ). В этом режиме происходит довольно сложное комбинирование цветов фона и рисунка, с трудно предсказуемым результатом (на­пример, при наложении красного прямоугольника на белый фон он будет отображен лазурным цветом). Различные сочетания цве­тов рисунка и фона будут давать разные результаты. Таким обра­зом, получается, что при использовании данного режима испор­ченным оказывается как рисунок, так и фон. Однако у данного режима есть очень полезная особенность, которая основана на внутренней логике оператора XOR, возвращающего 0, если оба бита, участвующие в операции, имеют одинаковое значение (0 и 0 или 1 и 1). Благодаря этой особенности появляется возможность восстанавливать затертый рисунком фон (независимо от его сложности). Если вначале нарисовать рисунок, а затем повторно изобразить его тем же цветом и на том же месте, то рисунок ис­чезнет и первоначальный фон будет полностью восстановлен. Аналогичные особенности имеет и режим pmNotXor (инвертиро­вание исключающего ИЛИ).

Для режима pmXor искажения цветов рисунка не происходит на черном фоне, для режима pmNotXor - на белом фоне.

Далее будут рассмотрены важнейшие методы объекта Canvas.

 

При прорисовке линий с помощью вышеприведенных методов используются свойства пера (Реп), а при заполнении внутренних областей - свойства кисти (Brush).

 

 

При любом изменении содержимого поверхности рисования, то есть при использовании методов, связанных с рисованием или вы­водом текста на поверхность рисования, возникают события OnChanging и OnChange. Событие OnChanging возникает не­посредственно перед модификацией холста, а событие OnChange -после модификации. Обработчики этих событий программируются вручную, так как объект Canvas не доступен на этапе проектиро­вания, что исключает возможность автоматического создания заго­товок данных обработчиков в редакторе кода.

Пример 10.1. Рисование на поверхности формы с использова­нием свойств и методов объекта Canvas. Необходимо нарисовать простейший рисунок с изображением корабля (см. рис. 10.1).

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

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

 

Контрольні питання

1. Навести огляд властивостей, подій та методів об’єкта Canvas

2. Навести огляд поняття кольорова константа

3. Надати характеристику об’єктів TBitmap, TComboBox, TDBComboBox, TDBGrid, TDBListBox, TDirectoryListBox, TDrawGrid, TFile-ListBox, TForm, Tlmage, TListBox, TOutline, TPaintBox, TPrinter, TStringGrid.


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 2: ПРОЦЕДУРНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ.

ПРОГРАМУВАННЯ ГРАФІКИ

ТЕМА 2.2: ГРАФІКА, МУЛЬТИМЕДІЯ ТА ДРУК

Лекція №22 – Графічні компоненти




Поделиться с друзьями:


Дата добавления: 2014-12-25; Просмотров: 468; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.052 сек.