Градиентная заливка формы

Говорят, в Windows 95 дружественный интерфейс. Hо почему учебник на 1000 страниц?! |
Процедура GradientRect делает градиентную заливку (сверху в низ). Параметры: цвета [от и до] и объект Canvas, поверхность которого и будет закрашена
procedure TForm1.GradientRect (FromRGB, ToRGB: TColor; Canvas: TCanvas); var RGBFrom : array[0..2] of Byte; { from RGB values } RGBDiff : array[0..2] of integer; { difference of from/to RGB values } ColorBand : TRect; { color band rectangular coordinates } I : Integer; { color band index } R : Byte; { a color band's R value } G : Byte; { a color band's G value } B : Byte; { a color band's B value } begin { extract from RGB values} RGBFrom[0] := GetRValue (ColorToRGB (FromRGB)); RGBFrom[1] := GetGValue (ColorToRGB (FromRGB)); RGBFrom[2] := GetBValue (ColorToRGB (FromRGB)); { calculate difference of from and to RGB values} RGBDiff[0] := GetRValue (ColorToRGB (ToRGB)) - RGBFrom[0]; RGBDiff[1] := GetGValue (ColorToRGB (ToRGB)) - RGBFrom[1]; RGBDiff[2] := GetBValue (ColorToRGB (ToRGB)) - RGBFrom[2]; { set pen sytle and mode} Canvas.Pen.Style := psSolid; Canvas.Pen.Mode := pmCopy; { set color band's left and right coordinates} ColorBand.Left := 0; ColorBand.Right:= canvas.ClipRect.Right-Canvas.ClipRect.Left; for I := 0 to $ff do begin { calculate color band's top and bottom coordinates} ColorBand.Top := MulDiv (I , canvas.ClipRect.Bottom-Canvas.ClipRect.Top, $100); ColorBand.Bottom := MulDiv (I + 1,canvas.ClipRect.Bottom-Canvas.ClipRect.Top, $100); { calculate color band color} R := RGBFrom[0] + MulDiv (I, RGBDiff[0], $ff); G := RGBFrom[1] + MulDiv (I, RGBDiff[1], $ff); B := RGBFrom[2] + MulDiv (I, RGBDiff[2], $ff); { select brush and paint color band} Canvas.Brush.Color := RGB (R, G, B); Canvas.FillRect (ColorBand); end; end; |
Эту процедуру объявляем в публичных объявлениях:
public { Public declarations } procedure GradientRect(FromRGB, ToRGB: TColor; Canvas: TCanvas); |
Для закраски формы в обработчик формы OnPaint нужно вставить:
GradientRect (clBlue, clBlack, Canvas); |
По событию OnResize для формы напишем:
Paint; |
Далее: Заполнение фона формы рисунком »»