Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit dz1_1;
- {Разработать иерархию классов Delphi. Разместить определение
- классов в отдельном модуле. Класс, позволяющий рисовать
- линию от точки, определенной нажатием правой клавиши мыши, до точки, определенной отжатием той же клавиши.
- Класс, позволяющий рисовать окружность от точки,
- определенной нажатием левой клавиши мыши, до точки, определенной отжатием той же клавиши.}
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ExtCtrls;
- type
- TMainForm = class(TForm)
- Image: TImage;
- procedure FormActivate(Sender: TObject);
- procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- end;
- var
- MainForm: TMainForm;
- implementation
- Var Point1, Point2: TPoint; first: boolean;
- {$R *.DFM}
- //активация формы
- procedure TMainForm.FormActivate(Sender: TObject);
- begin
- Image.Canvas.Brush.Color := clWhite;
- end;
- //нажатие правой кнопки мыши, установка начальных координат
- procedure TMainForm.ImageMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- begin
- if Button = mbRight then begin
- Point1.X := x;
- Point1.Y := y;
- first := true;
- end;
- end;
- //действия по движению мыши - стереть предыдущее, нарисовать текущее
- procedure TMainForm.ImageMouseMove(Sender: TObject; Shift: TShiftState;
- X, Y: Integer);
- begin
- if ssRight in Shift then begin
- Image.Canvas.MoveTo(Point1.X, Point1.Y);
- Point2.X := x;
- Point2.Y := y;
- if first then first := not first
- else begin
- Image.Canvas.Pen.Color := clWhite;
- Image.Canvas.LineTo(Point2.X, Point2.Y);
- end;
- Image.Canvas.Pen.Color := clBlack;
- Image.Canvas.LineTo(Point2.X, Point2.Y);
- end;
- end;
- //действия при отпускании кнопки мыши - отрисовать линию до текущей точки
- procedure TMainForm.ImageMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if Button = mbRight then begin
- Image.Canvas.MoveTo(Point1.X, Point1.Y);
- Point2.X := x;
- Point2.Y := y;
- Image.Canvas.Pen.Color := clBlack;
- Image.Canvas.LineTo(Point2.X, Point2.Y);
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement