Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.05.2008, 20:11
putenko putenko вне форума
Прохожий
 
Регистрация: 12.05.2008
Сообщения: 4
Репутация: 10
Вопрос Помогите разбить прямоугольник на 5 полос по вертикали

Как разбить прямоугольник на 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  
Старый 13.05.2008, 00:39
putenko putenko вне форума
Прохожий
 
Регистрация: 12.05.2008
Сообщения: 4
Репутация: 10
Вопрос

Ну пожалуйста не игнорируйте мою просьбу! Кто знает как сделать так чтобы Сздать эффект движения линий? Может с таймером? Помогите доделать курсовую! Ну кто нибудь!????????????????
Ответить с цитированием
  #3  
Старый 14.05.2008, 23:16
putenko putenko вне форума
Прохожий
 
Регистрация: 12.05.2008
Сообщения: 4
Репутация: 10
Радость Я уже сам додумался как заставить двигаться линии!

Я уже сам додумался!
Хотя может и неординарно или не совсем рационально!

Код:
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  
Старый 15.05.2008, 01:07
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

Тебе самая дорога в Microsoft Там у них всегда такие неординарные решения.

Написал бы сначала процедуру, которая закрашивает прямоугольныую область по точкам с переходом от одного цвета к другому. а потом вызывал бы ее со смещением и получилось бы все как надо.
Ответить с цитированием
  #5  
Старый 15.05.2008, 17:17
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Ну и еще надо пользоваться тегами
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #6  
Старый 15.05.2008, 19:54
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну ты и маньяк!!!
Как ты собрался таймеры-о синхронизировать???

На, смотри как надо делать.
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  
Старый 15.05.2008, 19:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На еще, если сам не можешь.
Заменишь константу в приведенном коде и поставь в таймере интервал на 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  
Старый 23.05.2008, 22:02
putenko putenko вне форума
Прохожий
 
Регистрация: 12.05.2008
Сообщения: 4
Репутация: 10
Радость

Респект всем кто мне помог! Огромное спасибо! Курсяк я на 5 защетил!!!!!!!!!!!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025