КАТЕГОРИИ: Архитектура-(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) |
Заполнение внутреннего пространства фигур
Begin Begin with Canvas do Pen.Width: = 10; (Использовать очень толстое перо) Pen.Style: = psInsideFrame; (Уменьшить фигуру, чтобы она уложилась в форму) Ellipse (0, 0, ClientWidth, ClientHeight); (Нарисовать эллипс) end; end; Запустите приложение и попробуйте изменить размеры формы. Вы обнаружите, что на часть изображения, которая была видна до изменения размеров формы, не перерисовывается. Для ускорения графического вывода Windows оптимизирует перерисовку, выполняя отсечение. В результате отсечения на экране отображаются лишь те области формы, которые не были видны до перерисовки. Рисование за границами области отсечения игнорируется Шаг 5. Указанная оптимизация имеет побочный эффект при отрисовке изображений, размеры которых рассчитываются из размеров формы. Чтобы его преодолеть, необходирмо определить в форме обработчик события OnResize, поместив в него вызов метода Invalidate: Procedure Tform1. FormResize (Sender: Tobject); begin Invalidate; end; Метод Invalidate помечает всю рабочую область формы как подлежащую обновлению. Перерисовка произойдет только при очередном событии OnPaint. Если необходимо перерисовать форму немедлено, то вызов Invalidate следует заменить на вызов метода Refresh. Для заполнения внутреннего пространства фигур используются методы объекта Canvas: FillRect(const Rect: Trect) – заполняет прямоугольник, используя текущую кисть. FloodFill (X,Y: Integer; Color: Tcolor; FillStyle: TfillStyle) – заливает область экрана, используя атрибуты кисти. Заливка начинается в точке (X,Y) и продолжается во всех направлениях до достижения цветовой границы. Способ заполнения области определяется параметром FillStyle. Если параметр FillStyle равен fsBorder, заливка заполняется до тех пор, пока не обнаружится граница с цветом, указанным в параметре Color. Если же параметр FillStyle равен fsSurface, заливка выполняется, пока не обнаруживается цвет, указанный в параметре Color. Шаг 6. Давайте, например, воспользуемся функцией FillRect для создания плавного перехода от желтого цвета к черному. Procedure TForm1. FormPaint (Sender: Tobject); var I: Integer; C: Byte; begin for I: = 0 to ClientHeight - 1 do begin C: = 255 - Round (255 / ClientHeight * I); Canvas. Brush. Color: = RGB (C, C, 0); Canvas. FillRect (Rect(0, I, ClientWidth, I + 1)); end; end; Заливка рабочей области происходит по строкам. За одну итерацию цикла заливается строка высотой в один пиксел. Цвет строки формируется функцией RGB, которая возвращает значение цвета по интенсивности трех его составляющих: красной, зеленой и синей. Интенсивность каждой составляющей цвета кодируется байтом и изменяется в диапазоне от 0 до 255. В примере выше красная и зеленая составляющие сначала равны 255 и уменьшаются по мере заливки строк до значения 0. Синяя составляющая отсутствует в результирующем цвете. Заменив в примере выражение RGB (C, C, 0) на RGB (0, 0, C) вы получите красивый переход от синего цвета к черному в стиле инсталляторов фирмы Microsoft. Заметим, что качество перехода зависит от количества используемых цветов и разрешающей способности видеоадаптера.
Дата добавления: 2014-01-20; Просмотров: 499; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |