![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
прошу прощения за тупой вопрос, но правила для новичков почитал и попробовал поискать по форуму, но, видимо не могу правильно задать вопрос:
мне нужно нарисовать два отрезка произвольно направленных (для начала хотя бы вертикальных и параллельных) а после соединить их отрезком произвольного направления (опять же для начала хотя бы перпендикулярно), причём место начала и конца отрезков выбирать кликами мыши (координаты мыши вроде захватывать умею) подскажите хотя бы какой модуль подключить, что бы создать форму для рисования этих отрезков с возможностью захвата координат начал и концов отрезков, спасибо ![]() математику оставляю себе, мне бы только имена функций... или операндов... или как там их... PS: я изучал Delphi давно в универе, поэтому знаю только основы (без графики), поэтому не пинайте больно. писал только простенькие математические программки с сохранением результатов в формате html-страниц |
|
#2
|
||||
|
||||
|
Цитата:
|
|
#3
|
||||
|
||||
|
NumLock, ну не издевайся так откровенно над новичком
![]() who, в помощь тебе придёт свойство формы (или другого объекта, например, TImage) Canvas (хороший ман тут). Скорее всего, тебе понадобятся свойства Pen и Brush, а так же методы MoveTo, LineTo и Ellipse. Последний раз редактировалось PhoeniX, 18.06.2013 в 18:44. |
|
#4
|
||||
|
||||
|
Вот, наконец-то, я дождался ПРАВИЛЬНО ЗАДАННОГО вопроса. NumLock, я поддержу Феникса в справедливом порицании. ТС если не решишь проблемы, обратись завтра в ПС - опишу тебе алгоритм и прочее (на словах, кода не жди).
|
|
#5
|
||||
|
||||
|
не вижу более простого способа:
Цитата:
|
|
#6
|
|||
|
|||
|
Цитата:
Num, читай внимательно, чел сказал, что мышку он схватывать умеет. Ему методы рисования нужны. Вот маленькая демка. Просто рисует красную линию по 2м кликам: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FIsDrawing : Boolean;
FP1, FP2 : TPoint;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FIsDrawing := False;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If FIsDrawing
Then
Begin
FP2 := Point(X,Y);
Canvas.Pen.Color := clRed;
Canvas.MoveTo(FP1.X, FP1.Y);
Canvas.LineTo(FP2.X, FP2.Y);
FIsDrawing := False;
End
Else
Begin
FP1 := Point(X,Y);
FIsDrawing := True;
End;
end;
end. |
|
#7
|
||||
|
||||
|
полное решение задачи.
линии задаются и рисуются нажатием, перемещением и отпусканием левой мыши. сначала одна линия, затем вторая. после задания второй линии их центры соединяются третей линией. начать сначала клавиша Esc. начинал проект с File-New-Application ![]() ЗЫ. все, у меня место кончилось для вложений ![]() |
|
#8
|
|||
|
|||
|
всем спасибо почитаю мануал и буду пробовать в свободное время.
отдельное спасибо за примеры. Цитата:
ещё раз спасибо всем. |
|
#9
|
||||
|
||||
|
так то не мануал, а готовый рабочий исходник
![]() в процедуре DoIt остается только механизм (расчет координат) соединения линий изменить на желаемый. |
|
#10
|
|||
|
|||
|
Цитата:
Цитата:
|