Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 19:37   #1
Konerld
 
Регистрация: 30.03.2009
Сообщений: 3
По умолчанию

Нужно написать программу
ставишь мышку в нужное место нажимаешь кнопку - появляется точка, ставишь в другое место нажимаешь появляется ещё точка попутно соединяясь с предыдущей (прямой линией).
Потом в дальнейшем хотелось бы, чтобы координаты точек можно было менять (например мышкой перетащить точку в другое место) и прямые линии тоже менялись (следовали за точками).

Программу писать не прошу (хочется самому попробовать).
Я прошу совета какой компонент для данного рисования ипользовать практичней и не особо сложно, ну и соответственно как для этого самого компонента для начала точки проставлять (код) ?

заранее спасибо

наверно я сложно загнул

вроде бы я определился с компонентов Tshape

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

ps для Delphi

Последний раз редактировалось Stilet; 31.03.2009 в 08:42.
Konerld вне форума Ответить с цитированием
Старый 31.03.2009, 05:09   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Цитата:
хотелось бы, чтобы координаты точек можно было менять (например мышкой перетащить точку в другое место) и прямые линии тоже менялись (следовали за точками)
Цитата:
перетягивая вершины мышкой менять форму фигуры
Мне бы тоже было интересно почитать варианты и предложения...

Должно быть примерно так как во вложении..?
(Прога не моя - нашёл в сети...)
Вложения
Тип файла: zip fredit.zip (185.0 Кб, 44 просмотров)
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 31.03.2009 в 05:11.
DomiNick вне форума Ответить с цитированием
Старый 31.03.2009, 09:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мне бы тоже было интересно почитать варианты и предложения...
Ах так. Вот тогда мое предложение:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure Label1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormDblClick(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var   pan: array of TPanel;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Label1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var t:TPoint;
begin

end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    ReleaseCapture;
  TPanel(sender).Perform(WM_SYSCOMMAND, $F012, 0);
  FormPaint(self);
end;

procedure TForm1.FormDblClick(Sender: TObject);
var   t:TPoint;
begin
setlength(pan,length(pan)+1);
pan[high(pan)]:=TPanel.Create(self);
with pan[high(pan)] do begin
 Parent:=self;
 width:=10;Height:=10;
 Color:=Clred;
 t:=ScreenToClient(Mouse.CursorPos);
 top:=t.y;left:=t.x;
 visible:=true;
 OnMouseDown:=Panel1MouseDown;
end;
Paint;
end;

procedure TForm1.FormPaint(Sender: TObject);
var i:integer;
begin
with Canvas do begin
FillRect(ClipRect);
if high(pan)<1 then exit;
  moveto(pan[0].Left,pan[0].Top);
  for i:=low(pan) to high(pan) do begin
   lineto(pan[i].Left,pan[i].Top);
  end;
   lineto(pan[0].Left,pan[0].Top);

end;  
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
FormPaint(self);
end;

end.
Запусти прогу и дважды покликай по форме этак раз 5 - получиш пентограмму (хе хе).
Маркеры можно мышой тягать, соответственно фигура будет перерисовыватся.

Тут подмарафетить прожку и будет отличный чертежник.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2009, 17:02   #4
Konerld
 
Регистрация: 30.03.2009
Сообщений: 3
По умолчанию

DomiNick
шикааарно
ток гдебы исходник найти

Stilet
спасибо что откликнулись
можно немножео поподробней что делает эта прога?
или что нужно ещё добавить на фрму итп?
просто у меня при компиляции открывается голая форма и при нажатиях ничего не происходит
Konerld вне форума Ответить с цитированием
Старый 31.03.2009, 19:30   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Хм... Интересная прога получилась...
А Вы смотрели вложение? Там оно мгновенно периресовывается...
Да ещё и Снежинку Коха крутит и масштабирует.....

А когда я геометрические фракталы делал жутко висло всё...
И кажется там для точек брали TShape формой stCircle...
Цитата:
дважды покликай по форме этак раз 5 - получиш пентограмму
Ну если точнее - пентакль...
Настоящую пентаграмму замучаешься строить...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 31.03.2009, 19:45   #6
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

В свое время(когда учился) делал прогу по рисованию "резиновых"(размеры которых меняешь пока не нарисовал их) примитивов:точка,окружность, прямоугольник,отрезок. Все что было нужно:Paintbox, почитать про режимы рисования в нем(использовал pmNotXor - закрашивает) и 3 события от мышки(Move,Up,Down) и обрабатывать какая кнопка нажата.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 05.04.2009, 03:04   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Хм... А для чего там вообще TLabel и отчего он не прорисовывается...

...и код пустой:
Код:
procedure TForm1.Label1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var t:TPoint;
begin

end;
Новое для меня: Low(pan) и High(pan) - я так понимаю первый и последний элементы массива..?
Тогда может вместо "For i:=Low(pan) To High(pan) Do" можно просто "For i:=0 To High(pan) Do"..?
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 05.04.2009 в 03:16.
DomiNick вне форума Ответить с цитированием
Старый 07.04.2009, 09:54   #8
Konerld
 
Регистрация: 30.03.2009
Сообщений: 3
По умолчанию

А можно как-то exe'шник раскодировать Делюфийский на команды?

DomiNick
ты откуда ту прогу достал (во вложении) ?
может там исходник можно нарыть
Konerld вне форума Ответить с цитированием
Старый 07.04.2009, 10:20   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
можно немножео поподробней что делает эта прога?
или что нужно ещё добавить на фрму итп?
Ну создаеш прогу, копипастиш код, и устанавливаеш в свойствах события для формы:MouseMove, FormPaint и остальные...
Цитата:
А Вы смотрели вложение?
Это ты мне? Смотрел, понравилось, но на скорую руку как сам понимаеш, такое не сделаеш - потому представил что успел. Дальше фантазия автора.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точки DoGGy Паскаль, Turbo Pascal, PascalABC.NET 11 23.01.2009 19:11
Игра Точки Selebro Общие вопросы C/C++ 7 08.12.2008 03:03
Найти координаты хотя бы одной точки, попадающей в область, образованную тремя пересекающимися линиями. Zibiv Помощь студентам 1 03.10.2008 17:55
Принадлежность точки Forro Помощь студентам 4 26.05.2008 14:33
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57