![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Ну и еще надо пользоваться тегами
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#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. |
#7
|
|||
|
|||
![]() На еще, если сам не можешь.
Заменишь константу в приведенном коде и поставь в таймере интервал на 100. Код:
const DefColors : Array [0..21] Of TColor = (clBlack, clMaroon, clGreen, clOlive, clNavy, clPurple, clTeal, clGray, clSilver, clRed, clLime, clYellow, clBlue, clFuchsia, clAqua, clLtGray, clDkGray, clWhite, clMoneyGreen, clSkyBlue, clCream, clMedGray); |
#8
|
|||
|
|||
![]() Респект всем кто мне помог! Огромное спасибо! Курсяк я на 5 защетил!!!!!!!!!!!!!
|