![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Как разбить прямоугольник на 5 полос различных цветов по вертикали и установить смену цветов полос создающюю иллюзию их вертикального движения.
Я паписал, то как, разбить прямоугольник на 5 полос различных цветов по вертикали. Код:
procedure TForm1.FormPaint(Sender: TObject); const L = 50;// ширина (полосы) H = 300;// высота (полосы) var x,y: integer;// левый верхний угол begin x := 20; y := 20; with Canvas do begin Brush.Color := clRed;// цвет закраски Pen.Color := clRed;// цвет границы Rectangle(x,y,x+L,y+H); Brush.Color := clYellow; Pen.Color := clYellow; Rectangle(x+L,y,x+2*L,y+H); Brush.Color := clGreen; Pen.Color := clGreen; Rectangle(x+2*L,y,x+3*L,y+H); Brush.Color := clBlue; Pen.Color := clBlue; Rectangle(x+3*L,y,x+4*L,y+H); Brush.Color := clPurple; Pen.Color := clPurple; Rectangle(x+4*L,y,x+5*L,y+H); Pen.Color := clBlack; Brush.Style := bsClear;// "прозрачная" кисть Rectangle(x,y,x+5*L,y+H) end; end; end. Admin: Используем теги! А дальше ступор! Помогите пожалуйста! Последний раз редактировалось Admin, 12.05.2008 в 22:10. |
|
#2
|
|||
|
|||
|
Ну пожалуйста не игнорируйте мою просьбу! Кто знает как сделать так чтобы Сздать эффект движения линий? Может с таймером? Помогите доделать курсовую! Ну кто нибудь!????????????????
|
|
#3
|
|||
|
|||
|
Я уже сам додумался!
Хотя может и неординарно или не совсем рационально! Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
Timer3: TTimer;
Timer4: TTimer;
Timer5: TTimer;
Timer6: TTimer;
Timer7: TTimer;
Timer8: TTimer;
Timer9: TTimer;
Timer10: TTimer;
Timer11: TTimer;
Timer12: TTimer;
Timer13: TTimer;
Timer14: TTimer;
Timer15: TTimer;
Timer16: TTimer;
Timer17: TTimer;
Timer18: TTimer;
Timer19: TTimer;
Timer20: TTimer;
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure Timer6Timer(Sender: TObject);
procedure Timer7Timer(Sender: TObject);
procedure Timer8Timer(Sender: TObject);
procedure Timer9Timer(Sender: TObject);
procedure Timer10Timer(Sender: TObject);
procedure Timer11Timer(Sender: TObject);
procedure Timer12Timer(Sender: TObject);
procedure Timer13Timer(Sender: TObject);
procedure Timer14Timer(Sender: TObject);
procedure Timer15Timer(Sender: TObject);
procedure Timer16Timer(Sender: TObject);
procedure Timer17Timer(Sender: TObject);
procedure Timer18Timer(Sender: TObject);
procedure Timer19Timer(Sender: TObject);
procedure Timer20Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y: integer;
const
L = 50;// ширина (полосы)
H = 300;// высота (полосы)
implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Brush.Color := clRed;// цвет закраски
Pen.Color := clRed;// цвет границы
Rectangle(x,y,x+L,y+H);
Brush.Color := clYellow;
Pen.Color := clYellow;
Rectangle(x+L,y,x+2*L,y+H);
Brush.Color := clGreen;
Pen.Color := clGreen;
Rectangle(x+2*L,y,x+3*L,y+H);
Brush.Color := clBlue;
Pen.Color := clBlue;
Rectangle(x+3*L,y,x+4*L,y+H);
Brush.Color := clPurple;
Pen.Color := clPurple;
Rectangle(x+4*L,y,x+5*L,y+H);
Pen.Color := clBlack;
Brush.Style := bsClear;// "прозрачная" кисть
Rectangle(x,y,x+5*L,y+H)
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer1.Enabled:=True;
Timer1.Interval:=0;
Brush.Color := clPurple;
Pen.Color := clPurple;
Rectangle(x,y,x+L,y+H);
Timer1.Enabled:=True;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer2.Enabled:=True;
Timer2.Interval:=0;
Brush.Color := clRed;
Pen.Color := clRed;
Rectangle(x+L,y,x+2*L,y+H);
Timer2.Enabled:=True;
end;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer3.Enabled:=True;
Timer3.Interval:=0;
Brush.Color := clYellow;
Pen.Color := clYellow;
Rectangle(x+2*L,y,x+3*L,y+H);
Timer3.Enabled:=True;
end;
end;
procedure TForm1.Timer4Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer4.Enabled:=True;
Timer4.Interval:=0;
Brush.Color := clGreen;
Pen.Color := clGreen;
Rectangle(x+3*L,y,x+4*L,y+H);
Timer4.Enabled:=True;
end;
end;
procedure TForm1.Timer5Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer5.Enabled:=True;
Timer5.Interval:=0;
Brush.Color := clBlue;
Pen.Color := clBlue;
Rectangle(x+4*L,y,x+5*L,y+H);
Timer5.Enabled:=True;
end;
end;
procedure TForm1.Timer6Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer6.Enabled:=True;
Timer6.Interval:=1000;
Brush.Color := clBlue;
Pen.Color := clBlue;
Rectangle(x,y,x+L,y+H);
Timer6.Enabled:=True;
end;
end;
procedure TForm1.Timer7Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer7.Enabled:=True;
Timer7.Interval:=1000;
Brush.Color := clPurple;
Pen.Color := clPurple;
Rectangle(x+L,y,x+2*L,y+H);
Timer7.Enabled:=True;
end;
end;
procedure TForm1.Timer8Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer8.Enabled:=True;
Timer8.Interval:=1000;
Brush.Color := clRed;
Pen.Color := clRed;
Rectangle(x+2*L,y,x+3*L,y+H);
Timer8.Enabled:=True;
end;
end;
procedure TForm1.Timer9Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer9.Enabled:=True;
Timer9.Interval:=1000;
Brush.Color := clYellow;
Pen.Color := clYellow;
Rectangle(x+3*L,y,x+4*L,y+H);
Timer9.Enabled:=True;
end;
end;
procedure TForm1.Timer10Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer10.Enabled:=True;
Timer10.Interval:=1000;
Brush.Color := clGreen;
Pen.Color := clGreen;
Rectangle(x+4*L,y,x+5*L,y+H);
Timer10.Enabled:=True;
end;
end;
procedure TForm1.Timer11Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer11.Enabled:=True;
Timer11.Interval:=2000;
Brush.Color := clGreen;
Pen.Color := clGreen;
Rectangle(x,y,x+L,y+H);
Timer11.Enabled:=True;
end;
end;
procedure TForm1.Timer12Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer12.Enabled:=True;
Timer12.Interval:=2000;
Brush.Color := clBlue;
Pen.Color := clBlue;
Rectangle(x+L,y,x+2*L,y+H);
Timer12.Enabled:=True;
end;
end;
procedure TForm1.Timer13Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer13.Enabled:=True;
Timer13.Interval:=2000;
Brush.Color := clPurple;
Pen.Color := clPurple;
Rectangle(x+2*L,y,x+3*L,y+H);
Timer13.Enabled:=True;
end;
end;
procedure TForm1.Timer14Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer14.Enabled:=True;
Timer14.Interval:=2000;
Brush.Color := clRed;
Pen.Color := clRed;
Rectangle(x+3*L,y,x+4*L,y+H);
Timer14.Enabled:=True;
end;
end;
procedure TForm1.Timer15Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer15.Enabled:=True;
Timer15.Interval:=2000;
Brush.Color := clYellow;
Pen.Color := clYellow;
Rectangle(x+4*L,y,x+5*L,y+H);
Timer15.Enabled:=True;
end;
end;
procedure TForm1.Timer16Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer16.Enabled:=True;
Timer16.Interval:=3000;
Brush.Color := clYellow;
Pen.Color := clYellow;
Rectangle(x,y,x+L,y+H);
Timer16.Enabled:=True;
end;
end;
procedure TForm1.Timer17Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer17.Enabled:=True;
Timer17.Interval:=3000;
Brush.Color := clGreen;
Pen.Color := clGreen;
Rectangle(x+L,y,x+2*L,y+H);
Timer17.Enabled:=True;
end;
end;
procedure TForm1.Timer18Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer18.Enabled:=True;
Timer18.Interval:=3000;
Brush.Color := clBlue;
Pen.Color := clBlue;
Rectangle(x+2*L,y,x+3*L,y+H);
Timer18.Enabled:=True;
end;
end;
procedure TForm1.Timer19Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer19.Enabled:=True;
Timer19.Interval:=3000;
Brush.Color := clPurple;
Pen.Color := clPurple;
Rectangle(x+3*L,y,x+4*L,y+H);
Timer19.Enabled:=True;
end;
end;
procedure TForm1.Timer20Timer(Sender: TObject);
begin
x := 20;
y := 20;
with Canvas do
begin
Timer20.Enabled:=True;
Timer20.Interval:=3000;
Brush.Color := clRed;
Pen.Color := clRed;
Rectangle(x+4*L,y,x+5*L,y+H);
Timer20.Enabled:=True;
end;
end;
end.Admin: Бан на 3 дня для тех кто в танке. Последний раз редактировалось Admin, 15.05.2008 в 20:00. |
|
#4
|
|||
|
|||
|
Тебе самая дорога в Microsoft
Там у них всегда такие неординарные решения.Написал бы сначала процедуру, которая закрашивает прямоугольныую область по точкам с переходом от одного цвета к другому. а потом вызывал бы ее со смещением и получилось бы все как надо. |
|
#5
|
||||
|
||||
|
Ну и еще надо пользоваться тегами
|
|
#6
|
|||
|
|||
|
Ну ты и маньяк!!!
Как ты собрался таймеры-о синхронизировать??? На, смотри как надо делать. 1 таймер и одна процедура отрисовки. В событии таймера либо инициализируем массив из констант, либо просто перемещаем элементы массива по кольцу на 1 шаг. Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
AColors : Array Of TColor;
public
{ Public declarations }
procedure DrawColors(ARect : TRect; AColors : Array Of TColor);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
DefColors : Array [0..6] Of TColor = (clRed, clGreen, clGray, clYellow, clBlack, clNavy, clMaroon);
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := Not Timer1.Enabled;
end;
procedure TForm1.DrawColors(ARect: TRect; AColors : Array Of TColor);
var
I : Integer;
R : TRect;
begin
For I := Low(AColors) To High(AColors) Do
Begin
R := Rect(ARect.Left,
ARect.Top + I * Round((ARect.Bottom - ARect.Top)/Length(AColors)),
ARect.Right,
ARect.Top + (I + 1) * Round((ARect.Bottom - ARect.Top)/Length(AColors)));
Self.Canvas.Brush.Color := AColors[i];
Self.Canvas.FillRect(R);
End;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
I : Integer;
C : TColor;
begin
If Length(AColors) = 0
Then
Begin
// First run
SetLength(AColors, Length(DefColors));
For I := Low(DefColors) To High(DefColors) Do AColors[i] := DefColors[i];
End
Else
Begin
C := AColors[Low(AColors)];
For I := Low(AColors) To High(AColors)-1 Do
Acolors[i] := AColors[I+1];
AColors[High(AColors)] := C;
End;
DrawColors(Rect(100,100,300,200),AColors);
end;
end. |