Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

Градиентная заливка форм   Найти похожие ветки 

 
maxim2 ©   (2002-10-17 10:14) [0]

Привет всем!
Может кто подскажет как это можно реализовать, или какой-нибудь компонент для этого.


 
Separator ©   (2002-10-17 10:17) [1]

RxGradientCaption - правдо тока для Caption


 
gek ©   (2002-10-17 10:36) [2]

В дополнение к Separator © (17.10.02 10:17)
Там же есть и специальная процедура в vclutils -
procedure GradientFillRect(Canvas: TCanvas; ARect: TRect; StartColor,
EndColor: TColor; Direction: TFillDirection; Colors: Byte);


 
LongIsland ©   (2002-10-17 10:40) [3]

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;


Собственно говоря, это из FAQ"а. Не следует им пренебрегать:-)


 
maxim2 ©   (2002-10-17 12:01) [4]

> LongIsland
А от куда это вызывать то7


 
Separator ©   (2002-10-17 12:26) [5]

В общем надо сделать так:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure GradientRect (FromRGB, ToRGB: TColor; Canvas: TCanvas);
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ Вставь сюда всю процедуру написаную LongIsland}

procedure TForm1.Button1Click(Sender: TObject);
begin
GradientRect(clRed, clBlue, Canvas);
end;

end.


 
maxim2 ©   (2002-10-17 12:32) [6]

Во! все спасибо получилось


 
Yr2 ©   (2002-10-17 14:37) [7]

Градиентная заливка - это все хорошо, многие уже знают и используют. А вот кто-нибудь делал компонент, который может нарисовать приблизительно такую же панель, какая отображается вверху ЭТОГО сайта. Уточняю: на темно-синем фоне тонкие горизонтальные линии голубого цвета. TShape в Delpi 5 это делает очень убого. Меня интересует компонент со свойствами, которыми можно задавать шаг, цвет, толщину линий штриховки и т.д. Вариант заполнения панели образцом битмапа прошу не предлагать.
Благодарю,если кто-нибудь подскажет.


 
mukha ©   (2002-10-18 22:12) [8]

Пример градиентной заливки
procedure TForm1.FormPaint(Sender: TObject);
var
Row,Ht:Word;
begin
Ht:=(ClientHeight+255) div 256;
for row:=0 to 255 do
with Canvas do
begin
Brush.Color:=RGB(0,0,Row);
FillRect(Rect(0,Row*Ht,clientWidth,(Row+1)*Ht));
end;
end;


 
Kibitzer ©   (2002-10-20 13:48) [9]


> mukha © (18.10.02 22:12)
> Пример градиентной заливки

Глючит однако. Наверно нужно сделать ещё так:
procedure TForm1.FormResize(Sender: TObject);
begin
FormPaint(Sender);
end;




Страницы: 1 вся ветка

Текущий архив: 2002.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
1-101331
Chlavik
2002-10-19 21:26
2002.10.31
Trouble с Delphi ......


4-101590
PaNiC
2002-09-19 18:40
2002.10.31
Помогите!!! Отдебагить дочерний процесс!!! ;-)


4-101597
Igor_thief
2002-09-14 12:17
2002.10.31
Hook


4-101569
МИФИст
2002-09-18 19:32
2002.10.31
WM_VSCROLL


3-101179
Hlor
2002-10-11 15:57
2002.10.31
Еще один вопрос....