Рисование в Delphi, С помощью мыши |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Рисование в Delphi, С помощью мыши |
Shmaniche |
9.12.2012 17:44
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: 0 |
Надо нарисовать элипс. Самое простое что пришло в голову это поместить на форму PaintBox и написать:
Код var Form1: TForm1; MouseButtonDown: Boolean= false; StartX, StartY: Integer; implementation procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MouseButtonDown:=true; StartX:=X; StartY:=Y; end; procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Form1.Caption:=Format ('Координаты: x=%d, y=%d ' , [X, Y]); // Координаты в заголовке. if MouseButtonDown=true then PaintBox1.Canvas.Ellipse(StartX, Starty, X, Y); end; procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MouseButtonDown:=false; end; Но от элипса остается след, если нажатую мышку двигать назад. Как избавиться от этого следа? Сообщение отредактировано: Shmaniche - 9.12.2012 17:46 |
Shmaniche |
21.12.2012 15:56
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: 0 |
Поразмыслив придумал как из эллипса сделать окружность:
Код if (Button=mbLeft) // Если нажата левая клавиша мыши... then Circle:=true // то рисуем окружность else Circle:=false; // иначе ничего не рисуем. ... if (MouseButtonDown) and (Circle) then // Если нажата клавиша мыши, и Circle=true, то... begin Canvas.Ellipse(StartX, StartY, EndX, EndY); EndX:=X; EndY:=Y; // Фиксируем конечные координаты... if ((X<StartX) and (Y<StartY)) // Если X и Y меньше точки откуда рисуем... or ((X>StartX) and (Y>StartY)) // или X и Y больше точки откуда рисуем,... then EndX:=EndY-StartY+StartX // тогда рисуем окружность влево вверх и вправо вниз. else EndY:=StartX+StartY-EndX; // Иначе рисуем окружность влево вниз и вправо верх. Canvas.Ellipse(StartX, StartY, EndX, EndY); // и фигуру. end; Сообщение отредактировано: Shmaniche - 21.12.2012 15:56 |
Текстовая версия | 22.12.2024 10:28 |