Показать сообщение отдельно
  #6  
Старый 23.06.2009, 13:02
PiboDIE PiboDIE вне форума
Прохожий
 
Регистрация: 17.06.2009
Сообщения: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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му параметру, что бы сохранились корректные размеры прямоугольников.
Пишу с работы, где нет среды разработки - негде проверить работоспособность моего кода, пишу вслепую. Но, вроде как, с алгоритмом не ошибаюсь.
Ответить с цитированием