Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Рисование квадратов с помощью мыши


Автор: LexaL 2.4.2011, 11:50
Добрый день! Есть программка позволяющая рисовать квадраты, только проблема в том, что она не оставляет нарисованный квадрат на форме, а при нажатии на кнопку мыши рисует новый. Как можно сделать, что бы оставался старый и можно было нарисовать новый? Спасибо! 

Код


  private
    { Private declarations }
   AnchorX, AnchorY,
   CurX, CurY: Integer;
   Bounding: Boolean;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
AnchorX := X;
   CurX := X;
   AnchorY  := Y;
    CurY := Y;
   Bounding := True;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Bounding then
    begin
     Canvas.Pen.Mode := pmNot;
     Canvas.Pen.Width := 2;
     Canvas.Brush.Style := bsClear;
     Canvas.Rectangle(AnchorX, AnchorY, CurX, CurY);
     CurX := X;
      CurY := Y;
     Canvas.Rectangle(AnchorX, AnchorY, CurX, CurY);
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Bounding then
    begin
     Bounding := False;
     Canvas.Pen.Mode := pmNot;
     Canvas.Brush.Style := bsClear;
     Canvas.Rectangle(AnchorX, AnchorY, CurX, CurY);
   end;

end;

Автор: Coder 3.4.2011, 13:13
После того, как нарисовал очередной квадрат, нужно запомнить его координаты  - AnchorX, AnchorY, CurX, CurY, например, в массиве типа TRect. В дальнейшем отрисовывать каждый элемент массива по событию OnPaint.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)