Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Лабораторная работа №30 Тема: Разработка поекта создания и использования графических примитивов, иллюстраций




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

Программное обеспечение: DELPHI

Оснащение: персональный компьютер, практикум

Время проведения: 2 уч. часа

 

Литература:

1. Фаронов В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов. 49-51, 400-483.

2. Бобровский С.И. Delphi 7. Учебный курс. СПб.: Питер, 2008. С. 151-182.

3. Чертик А.А., Борисок В.В., Корвель Ю.И. Delphi. Трюки и эффекты. СПб.: Питер, 2007. С. 10-48, 72-90.

4. Флёнов М.Е. Delphi в шутку и в серьез: что умеют хакеры. СПб.: Питер, 2006. С. 15-102.

ВОПРОСЫ ВХОДНОГО КОНТРОЛЯ:

1. Перечислите компоненты страницы Win32, их назначение, свойства, методы.

2. Перечислите компоненты страницы System, Dialogs и Samples, их назначение, свойства, методы.

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Графические компоненты

В стандартную библиотеку визуальных компонент Delphi входит несколько объектов, с помощью которых можно придать своей программе совершенно оригинальный вид. Это ― TImage (TDBImage), TShape, TBevel.

TImage позволяет поместить графическое изображение в любое место на форме. Этот объект очень прост в использовании - выберите его на странице Additional и поместите в нужное место формы. Собственно картинку можно загрузить во время дизайна в редакторе свойства Picture (Инспектор Объектов). Картинка должна храниться в файле в формате BMP (bitmap), WMF (Windows Meta File) или ICO (icon). (TDBImage отображает картинку, хранящуюся в таблице в поле типа BLOB. При этом доступен только формат BMP.)

TShape ― простейшие графические объекты на форме типа круг, квадрат и т.п. Вид объекта указывается в свойстве Shape. Свойство Pen определяет цвет и вид границы объекта. Brush задает цвет и вид заполнения объекта. Эти свойства можно менять как во время дизайна, так и во время выполнения программы.

TBevel ― объект для украшения программы, может принимать вид рамки или линии. Объект предоставляет меньше возможностей по сравнению с TPanel, но не занимает ресурсов. Внешний вид указывается с помощью свойств Shape и Style.

 

Свойство объектов 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:

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), с его помощью Вы получаете доступ к каждой отдельной точке изображения.

 

Методы Canvas:

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

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

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

 

Объект TPaintBox

На странице System Палитры Компонент есть объект TPaintBox, который можно использовать для построения приложений типа графического редактора или, например, в качестве места построения графиков (если, конечно, у Вас нет для этого специальных компонент третьих фирм). Никаких ключевых свойств, кроме Canvas, TPaintBox не имеет, собственно, этот объект является просто канвой для рисования. Важно, что координаты указателя мыши, передаваемые в обработчики соответствующих событий (OnMouseMove и др.), являются относительными, т.е. это смещение мыши относительно левого верхнего угла объекта TPaintBox, а не относительно левого верхнего угла формы.


МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Для оперативного хранения изображений и подписей к ним используется следующий список строк:

private

slBitMap: TSringList;

Этот список необходимо создать и наполнить в момент создания окна и уда­лить при его уничтожении. Эти операции осуществляются в обработчиках событий OnCreate и OnDestroy формы. Обратите внимание: в константе Bmp_Path указывается стандартный путь доступа к графическим файлам. Если на вашем компьютере они установлены в другой папке, эту константу нужно соответствующим образом изменить, после этого полезно осуществить прогон программы и убедиться в доступности файлов.

Чтобы отобразить текст подписи в окне редактора (оно появляется автомати­чески после щелчка на подписи), необходимо создать обработчик события OnGet-EditText. В нем строка списка slBitMap, индекс которой вычисляется на основе текущих колонки и ряда табличной ячейки, передается встроенному в компонент редактору. Поскольку в программе разрешается редактировать текст подписи, об­работчик OnSetEditText осуществляет обратные действия и сохраняет в списке slBitMap отредактированную подпись. Обработчик OnDrawCell обязательно создается для любого компонента TDrawGrid, так как без него компонент не смо­жет заполнить пустые ячейки каким-либо изображением и/или текстом.

Чтобы согласовать размеры ячеек таблицы с размерами окна программы, используется обработчик события OnResize (это событие возникает при каждом изменении размеров окна). Высота (ширина) каждой ячейки устанавливается равной половине высоты (ширины) клиентской области формы минус 1 пиксел. Этот запас предотвращает автоматическую вставку в таблицу полос прокрутки (табл. 32.1).

 

Таблица 32.1 ― Рекомендации по выполнению задания

Свойство Значение Комментарий
Align alClient Таблица занимает всю клиентскую часть экрана
ColCount   В таблице 2 колонки
FixedCols   Нет фиксированных колонок
FixedRows   Нет фиксированных рядов
Name dgDraw Имя таблицы
Options.goEditing True Разрешено редактирование текста
RowCount   В таблице 2 строки
ScrollBars sbNone Не надо вставлять полосы прокрутки

procedure TTfmDrawGrid.dgDrawGridGetEditText(Sender: TObject; ACol, ARow: Integer; var Value: string);

// Передает в редактируемое поле текст, из ячейки

begin

Value:= slBitMap[2 * ACol + Arow]

end;

procedure TTfmDrawGrid.dgDrawGridSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: string);

// Получает текст из редактируемого поля и сохраняет его в slBitMap

begin

slBitMap[2 * ACol + ARow]:= Value

end;

procedure TTfmDrawGrid.FormCreate(Sender: TObject);

const

FNames: array [0..3] of String = ('c:\bmp1.bmp', 'c:\bmp2.bmp', 'c:\bmp3.bmp', 'c:\bmp4.bmp');

Var k: Integer;

begin

// Создаем список строк:

slbitmap:= TStringList.Create;

// Вставляем в него названия файлов и картинки:

with slbitmap do for k:= 0 to 3 do

begin

Add (FNames [k]);

Objects [k]:= TBitMap.Create;

(Objects[k] as TBitMap).LoadFromFile (FNames[k])

end;

procedure TTfmDrawGrid.FormDeactivate(Sender: TObject);

begin // Удаляем список slBitMap при разрушении формы

slBitMap.Free

end;

procedure TTfmDrawGrid.FormResize(Sender: TObject);

// Изменяет размеры ячеек при изменении размеров окна.

// Запас в один пиксел необходим для предотвращения автоматической прокрутки

begin

with dgDrawGrid do

begin

DefaultColWidth:= ClientRect.Right div 2 - 1; DefaultRowHeight:= ClientRect.Bottom div 2-1

end;

end;

procedure TTfmDrawGrid.dgDrawGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

// Рисует картинку из slBitMap.Objects и текст из slBitMap

Var k: Integer;

begin

k:= 2 * ACol + ARow;

with dgDrawGrid.Canvas, Rect, slBitMap do begin

// Уменьшаем высоту картинки для вывода под ней текста:

Bottom:= Bottom - TextHeight('1') -2;

// Рисуем картинку:

StretchDraw(Rect, (Objects[k] as TBitMap));

// Центрируем текст по горизонтали и выводим его:

TextOut(Left+(Right-Left-TextWidth(slBitMap[k])) div 2, Bottom + 1, slBitMap [k])

end // with dgDraw.Canvas, Rect, slBitMap do

end;

СОДЕРЖАНИЕ РАБОТЫ: Создать таблицу 2х2 для отображения в ее ячейках изображений в формате *.bmp.

 

ВОПРОСЫ ВЫХОДНОГО КОНТРОЛЯ:

Опишите свойство Canvas и его использование.

ДОМАШНЕЕ ЗАДАНИЕ

Выучить компоненты страниц Standard, Additional, Win32, System, Dialogs и Samples, их назначение, свойства, методы.






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


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 527 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Логика может привести Вас от пункта А к пункту Б, а воображение — куда угодно © Альберт Эйнштейн
==> читать все изречения...

2227 - | 2156 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.