Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Рисование квадрата мышкой

Delphi , Графика и Игры , Canvas

Рисование квадрата мышкой

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

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

 implementation

 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;

Раздел объявления В разделе объявления определяются приватные переменные и константы для формы. В этом случае он декларирует:

  • AnchorX, AnchorY: целочисленные значения для хранения координат начальной точки привязки.
  • CurX, CurY: целочисленные значения для хранения текущей позиции курсора.
  • Bounding: флаг Boolean, указывающий, является ли процесс рисования активным.

Раздел реализации В разделе реализации содержится три процедуры событий, которые отвечают на события мыши:

  1. FormMouseDown: Процедура запускается при клике кнопки мыши (левая, средняя или правая). Она устанавливает координаты начальной точки привязки (AnchorX, AnchorY) и позицию курсора (CurX, CurY). Кроме того, она устанавливает флаг Bounding в значение True, указывая, что процесс рисования начался.
  2. FormMouseMove: Процедура запускается при перемещении мыши при удержании кнопки (левая, средняя или правая). Если флаг Bounding установлен в True, она:
    • Устанавливает режим пера в pmNot (без заливки) и ширину в 2 пикселя.
    • Очищает стиль кисти до bsClear.
    • Рисует прямоугольник от начальной точки привязки (AnchorX, AnchorY) до текущей позиции курсора (CurX, CurY). Это эффективно создает квадрат.
    • Обновляет позицию курсора (CurX, CurY) с новыми координатами мыши.
  3. FormMouseUp: Процедура запускается при отпускании кнопки мыши (левая, средняя или правая). Если флаг Bounding установлен в True, она:
    • Устанавливает флаг Bounding в значение False, указывая, что процесс рисования окончен.
    • Восстанавливает режим пера и стиль кисти до их 기본ных значений.
    • Рисует один последний прямоугольник от начальной точки привязки (AnchorX, AnchorY) до текущей позиции курсора (CurX, CurY) для завершения квадрата.

В целом, это код позволяет пользователю рисовать квадрат, кликая, перемещая и отпуская кнопку мыши. Процесс рисования запускается событиями мыши, которые обновляют координаты прямоугольника в реальном времени.

В статье описывается код на Delphi, который позволяет рисовать квадрат мышкой на форме приложения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Canvas ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:22:38/0.0033659934997559/0