Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.06.2013, 17:20
who who вне форума
Прохожий
 
Регистрация: 18.06.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию отрезки и координаты

прошу прощения за тупой вопрос, но правила для новичков почитал и попробовал поискать по форуму, но, видимо не могу правильно задать вопрос:

мне нужно нарисовать два отрезка произвольно направленных (для начала хотя бы вертикальных и параллельных) а после соединить их отрезком произвольного направления (опять же для начала хотя бы перпендикулярно), причём место начала и конца отрезков выбирать кликами мыши (координаты мыши вроде захватывать умею)

подскажите хотя бы какой модуль подключить, что бы создать форму для рисования этих отрезков с возможностью захвата координат начал и концов отрезков, спасибо



математику оставляю себе, мне бы только имена функций... или операндов... или как там их...

PS: я изучал Delphi давно в универе, поэтому знаю только основы (без графики), поэтому не пинайте больно.
писал только простенькие математические программки с сохранением результатов в формате html-страниц
Ответить с цитированием
  #2  
Старый 18.06.2013, 18:08
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от who
подскажите хотя бы какой модуль подключить, что бы создать форму для рисования этих отрезков с возможностью захвата координат начал и концов отрезков
File-New-Application
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 18.06.2013, 18:42
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

NumLock, ну не издевайся так откровенно над новичком
who, в помощь тебе придёт свойство формы (или другого объекта, например, TImage) Canvas (хороший ман тут). Скорее всего, тебе понадобятся свойства Pen и Brush, а так же методы MoveTo, LineTo и Ellipse.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj

Последний раз редактировалось PhoeniX, 18.06.2013 в 18:44.
Ответить с цитированием
  #4  
Старый 18.06.2013, 21:44
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Вот, наконец-то, я дождался ПРАВИЛЬНО ЗАДАННОГО вопроса. NumLock, я поддержу Феникса в справедливом порицании. ТС если не решишь проблемы, обратись завтра в ПС - опишу тебе алгоритм и прочее (на словах, кода не жди).
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 19.06.2013, 08:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

не вижу более простого способа:
Цитата:
Сообщение от who
создать форму для рисования этих отрезков с возможностью захвата координат начал и концов отрезков
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 19.06.2013, 09:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от NumLock
не вижу более простого способа:

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  
Старый 19.06.2013, 09:31
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

полное решение задачи.
линии задаются и рисуются нажатием, перемещением и отпусканием левой мыши. сначала одна линия, затем вторая. после задания второй линии их центры соединяются третей линией. начать сначала клавиша Esc.

начинал проект с File-New-Application

ЗЫ. все, у меня место кончилось для вложений
Вложения
Тип файла: rar DrawVector.rar (2.0 Кбайт, 1 просмотров)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 19.06.2013, 09:44
who who вне форума
Прохожий
 
Регистрация: 18.06.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

всем спасибо почитаю мануал и буду пробовать в свободное время.
отдельное спасибо за примеры.
Цитата:
начинал проект с File-New-Application
я конечно оценил шутку, но уж больно как-то обидно. создать форму и убить её не проблема. просто я пока плохо представляю как выделить место на форме (видимо неправильно выразился по поводу создания формы для рисования), где рисовать (мануал ещё не читал, так что не спешите комментировать и поучать)
ещё раз спасибо всем.
Ответить с цитированием
  #9  
Старый 19.06.2013, 10:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так то не мануал, а готовый рабочий исходник
в процедуре DoIt остается только механизм (расчет координат) соединения линий изменить на желаемый.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #10  
Старый 19.06.2013, 10:10
who who вне форума
Прохожий
 
Регистрация: 18.06.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
так то не мануал, а готовый рабочий исходник
я про мануал указанный PhoeniX-ом
Цитата:
Сообщение от NumLock
в процедуре DoIt остается только механизм (расчет координат) соединения линий изменить на желаемый.
пока нет времени проверять всё -- я этим занимаюсь дома в свободное время. спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter