Методы для работы с областью

 

Холст поддерживает несколько методов рисования, использующих структуру TRect. Как вы помните, TRect представляет собой запись, описывающую координаты верхнего левого и правого нижнего углов прямоугольной области:

typeTRect = record caseInteger of0: (Left, Top, Right, Bottom: Integer);

1: (TopLeft, BottomRight: TPoint);end;

 

Обычное копирование прямоугольника Source с холста Canvas осуществляет

процедура:

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

 

Результат копирования помещается в прямоугольник Dest. Изменяя размерность прямоугольника-получателя, можно получить эффект увеличения или уменьшения изображения. Скопировать прямоугольник Source из битовой карты Bitmap в прямоугольник Dest поможет процедура:

 

procedureBrushCopy(constDest: TRect; Bitmap: TBitmap; constSource: TRect; Color: TColor);

Особенность метода в том, что при копировании цвет Color заменяется на текущий цвет кисти. Этот нюанс позволяет рисовать прозрачную картинку.

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

varBitmap: TBitmap; Rect1, Rect2: TRect; sFileName: string;

Begin

sFileName:= . . .;

Rect1 := Rect(0,0,100,100); Rect2 := Rect(110,0,310, 200);

Bitmap := TBitmap.Create;

Bitmap.LoadFromFile(sFileName);

Form1.Canvas.Brush.Color:=Form1.color;

Form1.Canvas.BrushCopy(Rect1, Bitmap, Rect1, clWhite);

Form1.Canvas.CopyRect(Rect2,Bitmap.Canvas,Rect1);

Bitmap.Free;

end;

 

В листинге продемонстрирован пример использования функций BrushCopy() и CopyRect(). Метод BrushCopy() размещает на холсте растровую картинку из файла sFileName, причем фоновый цвет Bitmap замещается фоновым цветом кисти холста. Метод CopyRect() копирует изображение в прямоугольник вдвое большего размера, чем достигается эффект увеличения.

Способ наложения изображения на холст определяется свойством CopyMode. По умолчанию режим копирования «один в один» – cmSrcCopy.

Заливку области Rect текущей кистью осуществляет метод:

procedureFillRect(constRect: TRect);

 

Контур толщиной 1 пиксел для области Rect нарисует процедура FrameRect(), причем оконтуривание осуществляется текущей кистью:

procedureFrameRect(constRect: TRect);

 

Эффект наличия фокуса ввода на прямоугольнике Rect обеспечивает метод:

procedureDrawFocusRect(constRect: TRect);

 

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

procedureFloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);

typeTFillStyle = (fsSurface, fsBorder);

 

Заливка начинается с точки (X,Y). Режим заливки определяется значением параметра FillStyle. Если параметр принимает значение fsSurface, заливка прекратится только тогда, когда по соседству с точкой (X,Y) не останется ни одного пиксела с цветом Color. Второй режим (fsBorder) заставляет метод вести себя иначе. Процедура станет закрашивать окрестности точки (X,Y) до тех пор, пока не выйдет на границу с цветом Color. Приведенный ниже листинг демонстрирует способ закрашивания части окружности:








Дата добавления: 2016-03-15; просмотров: 564;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.