Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.85 KB | None | 0 0
  1. unit dz1_1;
  2. {Разработать иерархию классов Delphi. Разместить определение
  3.  классов в отдельном модуле. Класс, позволяющий рисовать
  4.  линию от точки, определенной нажатием правой клавиши мыши, до точки, определенной отжатием той же клавиши.
  5. Класс, позволяющий рисовать окружность от точки,
  6. определенной нажатием левой клавиши мыши, до точки, определенной отжатием той же клавиши.}
  7.  
  8. interface
  9.  
  10. uses
  11.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  12.   StdCtrls, ExtCtrls;
  13.  
  14. type
  15.   TMainForm = class(TForm)
  16.     Image: TImage;
  17.     procedure FormActivate(Sender: TObject);
  18.     procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
  19.       Shift: TShiftState; X, Y: Integer);
  20.     procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  21.       Y: Integer);
  22.     procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;
  23.       Shift: TShiftState; X, Y: Integer);
  24.   end;
  25.  
  26. var
  27.   MainForm: TMainForm;
  28.  
  29. implementation
  30.    Var Point1, Point2: TPoint; first: boolean;
  31. {$R *.DFM}
  32.  
  33. //активация формы
  34. procedure TMainForm.FormActivate(Sender: TObject);
  35. begin
  36.     Image.Canvas.Brush.Color := clWhite;
  37. end;
  38.  
  39.  
  40. //нажатие правой кнопки мыши, установка начальных координат
  41. procedure TMainForm.ImageMouseDown(Sender: TObject;
  42.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  43. begin
  44.   if Button = mbRight then begin
  45.     Point1.X := x;
  46.     Point1.Y := y;
  47.     first := true;
  48.   end;
  49. end;
  50.  
  51. //действия по движению мыши - стереть предыдущее, нарисовать текущее
  52. procedure TMainForm.ImageMouseMove(Sender: TObject; Shift: TShiftState;
  53.   X, Y: Integer);
  54. begin
  55.   if ssRight in Shift then begin
  56.     Image.Canvas.MoveTo(Point1.X, Point1.Y);
  57.  
  58.     Point2.X := x;
  59.     Point2.Y := y;
  60.  
  61.     if first then first := not first
  62.     else begin
  63.       Image.Canvas.Pen.Color := clWhite;
  64.       Image.Canvas.LineTo(Point2.X, Point2.Y);
  65.     end;
  66.  
  67.     Image.Canvas.Pen.Color := clBlack;
  68.     Image.Canvas.LineTo(Point2.X, Point2.Y);
  69.   end;
  70. end;
  71.  
  72. //действия при отпускании кнопки мыши - отрисовать линию до текущей точки
  73. procedure TMainForm.ImageMouseUp(Sender: TObject; Button: TMouseButton;
  74.   Shift: TShiftState; X, Y: Integer);
  75. begin
  76.   if Button = mbRight then begin
  77.     Image.Canvas.MoveTo(Point1.X, Point1.Y);
  78.     Point2.X := x;
  79.     Point2.Y := y;
  80.    
  81.  
  82.     Image.Canvas.Pen.Color := clBlack;
  83.     Image.Canvas.LineTo(Point2.X, Point2.Y);
  84.   end;
  85. end;
  86.  
  87. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement