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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2012, 20:37   #1
химик-кун
Новичок
Джуниор
 
Регистрация: 14.11.2012
Сообщений: 1
Сообщение Отображение графа в Delphi

Есть задача: нарисовать граф в image/paintbox вершины выбираются путём тыкания на экран. Вершины должны быть пронумерованы и не должны накладываться друг на друга. Пользуясь конспектом дописал до момента рисования, не наложения и нумеровки вершин, но работать оно отказываетьса+ хотелось бы услышать советы по тому как нарисовать ребра.
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    image: TImage;
    procedure mouseup(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);


  private
    { Private declarations }
  public
    { Public declarations }
  end;



var
  Form1: TForm1;
  y,x:Integer;
implementation

{$R *.dfm}
procedure TForm1.mouseup(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  const
    max=100;
    var form1:tform1;
    coord:array[1..max] of Tpoint;
    n:Byte;
function check(x,y:Integer;len:integer):Byte;
var
i:Byte;
begin
 check:=0;
 for i:=1 to n do
 begin
   if sqr(coord[i].x-x)+sqr(coord[i].y-y)<=Sqr(len)
   then check:=i;
 end;
end;
begin
 if check(x,y)=0 then
 begin
 Inc(n);
 image.Canvas.Brush.Color:=clRed;
 image.canvas.Ellipse(x-15,y-15,x+15,y+15);
 image.canvas.TextOut(x,y,IntToStr(n));
 end;

end;

end.
P.S. прошу прошения за опечатку не грава а графа

Последний раз редактировалось химик-кун; 14.11.2012 в 20:40.
химик-кун вне форума Ответить с цитированием
Старый 15.11.2012, 10:41   #2
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

химик-кун, в Delphi имеется тип
TPoint: record X, Y: integer; end;
Вам нужно завести массив из таких элементов, и добавлять точки при клике 'на экран'.
выводить вершины в виде Ellipse будете в цикле.

Для хранения связей нужна либо Матрица смежности, либо список собственно связей (пар номеров вершин).
Берегите друг друга!

Последний раз редактировалось Virtson; 15.11.2012 в 11:28.
Virtson вне форума Ответить с цитированием
Старый 15.11.2012, 13:20   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

http://programmersforum.ru/showthread.php?t=214365
Учитесь искать.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание графа по матрице и поиск кратчайшего пути из одного графа в другой lexflax Общие вопросы C/C++ 1 06.09.2012 07:32
Рисование графа на Delphi Sayrus38 Помощь студентам 0 29.11.2011 04:13
по заданной матрице смежности простого графа построить каркас этого графа с использованием поиска вширь d1m2o3n4 Помощь студентам 0 22.06.2011 22:43
Реализация о обход графа [Delphi] Proger_1 Помощь студентам 0 10.01.2011 21:40
Отображение графа. [Delphi] HoLToFF Помощь студентам 3 25.04.2009 21:54