Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2 семестр.doc
Скачиваний:
42
Добавлен:
27.05.2015
Размер:
777.73 Кб
Скачать

7.3. Типы графических объектов

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

Таблица 7.1 – Типы графических объектов

Объект

Описание

Picture

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

Bitmap

Графический объект, который используется для создания, манипулирования(масштабирования, скроллинга, вращения, закраски) и хранения картинок какфайлов на диске

Clipboard

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

Icon

Картинка, загруженная из файла пиктограммы

Drawing

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

Чтобы приложение сразу после запуска создавало чистую заготовку для изображения необходимо cоздать заготовку обработчика события OnCreate для формы, содержащей компонент Image, создать объект Bitmap и присвоить его свойству Picture.Graphic компонента Image.

Пример cоздания объекта Bitmap

Главная форма приложения Form1 содержит компонент типа TImage, который имеет

имя (свойство Name = Image1).

procedure TForm1.FormCreate(Sender: TObject);

var

Bitmap: TBitmap; {временная переменная для хранения графического образа}

begin

Bitmap.Create; { создание графического объекта )

Bitmap.Width := 200;{ установка начальной ширины }

Bitmap.Height : =200; { и начальной высоты объекта Bitmap }

{ присвоение созданного графического объекта компоненту Image }

Image1.Picture.Graphic := Bitmap;

Bitmap.Free; {уничтожение графического объекта}

end;

Свойство ScanLine позволяет получать информацию о цветах пикселей одной линии объекта Bitmap в виде массива RGB.

Пример использования свойства ScanLine объекта Bitmap для одновременного получения пикселей одной линии.

procedure TForm1.Button1Click(Sender: TObject);

var

х, у: integer;

BitMap: TBitmap;

P: PByteArray;

begin

Bitmap := ТBitmap.Create;

trу

if OpenDialog1.Execute then

begin

Bitmap.LoadFromFile(OpenDialog1.FlleName);

for у := 0 to Bitmap.height -1 do

begin

P := Bitmap.ScanLine(y);

for х := 0 to Bitmap.width –1 dо Р[х] := у;

end;

end;

Canvas.Draw(0,0,Bitmap);

finally

Bitmap.free;

end;

end;

Ключевые слова try и finally использованы для создания блоков защищенных ресурсов. Схема создания блока защищенных ресурсов { Выделение памяти или другого ресурса } try { Операторы, способные вызвать генерацию ошибки } finally { Освобождение ресурса } end;