КАТЕГОРИИ: Архитектура-(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; Просмотров: 490; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |