Цитата:
Сообщение от antikhrist
procedure TForm1.Button1Click(Sender: TObject);
begin
pb1.Canvas.Rectangle(x1, y1, x2, y2);
Dec(x1); Dec(x2); Dec(y1); Dec(y2);
end;
|
Тут что-то не то Вам предложили. В данном случае получается рисование прямоугольников справа налево и снизу вверх.
Я же Вам предлагал такой вариант
Код:
var
RectCount: integer; //Кол-во отрисованных прямоуголников
RectWidth, RectHeight: integer; //Ширина и высота прямоугольников. Можно даже константой объявить.
...
procedure TForm1.Button1Click(Sender: TObject);
begin
pb1.Canvas.Rectangle(RectWidth*RectCount, 0, RectWidth*RectCount+RectWidth, RectHeight);
или pb1.Canvas.Rectangle(RectWidth*RectCount, 0, RectWidth*(RectCount+1), RectHeight);
Inc(RectCount);
end;
Рекомендую обнулить при создании формы RectCount := 0;
В качестве второго параметра вместо 0 можно передавать какую-то константу - отступ от верхнего края канвы (Это если прямоугольники должны рисоваться не вплотную к верхней кромке), но в этом случае не забудьте добавить это значение к 4му параметру, что бы сохранились корректные размеры прямоугольников.
Пишу с работы, где нет среды разработки - негде проверить работоспособность моего кода, пишу вслепую. Но, вроде как, с алгоритмом не ошибаюсь.