Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
26.04.2015
Размер:
155.65 Кб
Скачать

Изображения на канве (холсте)

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

  1. Растровое заполнение изображение с использованием свойства Brush.Bitmap

Пример 13 Заполнение эллипса картинкой из файла

var B:TBitmap;

begin

B:=TBitmap.Create; // создание объекта Bitmap

B.LoadFromFile('Pic.bmp'); // чтение картинки

PB.Canvas.Brush.Bitmap:=B; // картинка для заливки

PB.Canvas.Pen.Color:=clRed;

PB.Canvas.Ellipse(0,0,PB.Width,PB.Height); // рисуем эллипс с заполением

B.Free; // удаление объекта

End;

  1. Копирование прямоугольной области с одного холста ( источника ) в прямоугольную область другого холста ( приемника ). Если источник и приемник имеют разные размеры то изображение масштабируется под размеры приемника. Приемником и источником может быть одна и та же канва. Для этого используется процедура CopyRect.

CopyRect(Dest:TRect; Canvas:TCanvas; Source: TRect)

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

Пример 14 Копирование клиентской области из Image в клиентскую область Form

Form1.Canvas.CopyRect(Form1.Canvas.ClipRect, Image1.Canvas, Image1.Canvas.ClipRect);

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

  • Вывести объект на экран

  • Стереть объект с экрана

  • Вывести с некоторым смещением этот объект

Для вывода объекта используется один источник, например прямоугольная область с кругом. А для очистки применяется другая прямоугольная область с фоном.

Пример 15 Перемещение круга по горизонтали (анимация).

var

R1,R2,R3:TRect;

begin

R1.Top:=0; R1.Left:=0; R1.Bottom:=50; R1.Right:=50; // область для круга

R2.Top:=100; R2.Left:=100; R2.Bottom:=150; R2.Right:=150; // область для фона

R3:=R1; // область приемника

for i:=1 to 400 do

begin

PB1.Canvas.CopyRect(R3,Im.Canvas,R2); // Стереть объект (цвет фона)

R3.Top:=0; R3.Left:=R3.Left+1; // Смещение области приемника

R3.Bottom:=50; R3.Right:=R3.Right+1;

PB1.Canvas.CopyRect(R3,Im.Canvas,R1); // Показ объекта в приемнике

end;

end;

  1. Вывод изображения на поверхность рисования осуществляет процедура Draw(x,y:Integer; Graphic:TGraphic), где x,y – координаты левого верхнего угла области вывода, а Graphic – растровый массив (изображение). Возможен вывод изображения в прямоугольную область, при этом используется процедура

StretchDraw(Rect:TRect; Graphic:TGraphic).

Пример 16 Вывод изображения на холст из файла

var Pic:TBitmap;

begin

Pic:=TBitmap.Create; // создание объекта Bitmap

Pic.LoadFromFile('Photo.bmp'); // чтение картинки

Form1.Canvas.Draw(10,20,Pic); // вывод картинки на холст

Pic.Free; // удаление объекта

end;

Соседние файлы в папке Методический материал