Здравствуйте. Следующая задача:
Создайте приложение, в котором можно рисовать прямоугольники мышью прямо на форме, при перемещении мыши с нажатой левой кнопкой должен прорисовываться прямоугольник и как резиновый изменяться то в большую, то в меньшую сторону, при отпускании кнопки мыши прямоугольник должен фиксироваться на форме. Перемещение мыши с не нажатой кнопкой не должно приводить к рисованию.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then Canvas.MoveTo(X,Y);
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
begin
Canvas.Brush.Color:=Color;
Canvas.FillRect(Canvas.ClipRect);
Canvas.Rectangle(Canvas.PenPos.X,Canvas.PenPos.Y,X,Y);
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then Canvas.Rectangle(Canvas.PenPos.X,Canvas.PenPos.Y,X,Y);
end;
end.
Прямоугольники рисуются, но при рисовании нового - стирается старый.
Как этого избежать? Возможно, что в процедуре FillRect нужно другие параметры указать? Если да, то какие?