![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Valkirie |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Началась графика и я решила, что наверное лучше было вешаться сразу, но теперь уже отступать некуда...
![]() Вообщем задание у меня такое: Калейдоскоп. PaintBox делится на 4 части. В одной из них выбирается случайно прямоугольник и закрашивается в случайно выбранный цвет. В остальных частях рисуются прямоугольники того же размера цвета, расположенные симметрично. Для восстановления запоминать 20 предыдущих прямоугольников. И всё бы хорошо... вот только в моём понятие калейдоскоп это такая штучка наполненная осколками цветного стекла... и я смутно представляю как это будет выглядеть с помощью прямоугольников... ![]() Вообщем PaintBox я на 4 части разделила, и прямоугольнички сгенирировала... А дальше... ![]() Я не совсем понимаю: 1. Прямоугольники должна быть случайными по размеру или одинаковыми ? 2. Могут ли они пересекаться ? Если нет, то каково условие для того, чтобы они не пересекались ? 3. Как сгенирировать 3 симметричных прямоугольника в остальных частях ? 4. И ещё момент "Для восстановления запоминать 20 предыдущих прямоугольников" - это как ? Help me please... :p2: |
![]() ![]() |
Valkirie |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Вот то, что я имею на данный момент...
Код const N=20; type TRect=record x,y,x1,x2,y1,y2:integer; Color:TColor; end; var Mas:array[1..N] of TRect; procedure DrawRect(Rec:TRect); begin Form1.PaintBox1.Canvas.Pen.color:=Rec.Color; Form1.PaintBox1.Canvas.Brush.Color:=Rec.Color; Form1.PaintBox1.Canvas.Rectangle(Rec.x1,Rec.x2,Rec.y1,Rec.y2); end; procedure HideRect (Rec:TRect); begin Form1.PaintBox1.Canvas.Pen.Color:=Form1.PaintBox1.Color; Form1.PaintBox1.Canvas.Brush.Color:=Form1.PaintBox1.Color; Form1.PaintBox1.Canvas.Rectangle(Rec.x1,Rec.x2,Rec.y1,Rec.y2); end; function GenerateRect(N:integer):TRect; var Rec:TRect; begin Rec.x1:=Random(200)+1; Rec.x2:=Random(200)+1; Rec.y1:=Random(200)+1; Rec.y2:=Random(200)+1; Rec.x:=Random(Form1.PaintBox1.Width div 2)-1; Rec.y:=Random(Form1.PaintBox1.Height div 2)-1; Rec.Color:=RGB(Random(256),Random(256),Random(256)); Result:=Rec end; procedure TForm1.PaintBox1Paint(Sender: TObject); var i,x,y,w,h:integer; begin w:=PaintBox1.Width; h:=PaintBox1.Height; x:=w div 2; y:=h div 2; PaintBox1.Canvas.Rectangle(0,0,w,h); PaintBox1.Canvas.MoveTo(x,0); PaintBox1.Canvas.LineTo(y,h); PaintBox1.Canvas.MoveTo(0,y); PaintBox1.Canvas.LineTo(w,x); for i:=1 to N do DrawRect(Mas[i]); HideRect(Mas[i]); end; procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin for i:=1 to N do Mas[i]:=GenerateRect(i); end; procedure TForm1.Timer1Timer(Sender: TObject); var k:integer; begin k:=random(n)+1; HideRect(Mas[k]); Mas[k]:=GenerateRect(N); DrawRect(Mas[k]); end; end. Посмотри что тут к чему... :p2: И спасибо за отзывчивость ![]() |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 16:02 |