Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Вниз

Компонент "Линия"   Найти похожие ветки 

 
AntonioBanderas   (2009-12-21 12:51) [0]

Добрый день. Хочу реализовать  компонент как в
Electronic WorkBeanch (cоединительная "резиновая" линия).
Помогите советом или статейкой если кто где видел. Ничего подходещего не на гуглил.


 
Б   (2009-12-21 14:28) [1]

По простому: Canvas.MoveTo, Canvas.LineTo, XOR - режим.


 
antonn ©   (2009-12-21 15:58) [2]

она там прокладывает путь среди компонентов, под прямыми углами


 
@!!ex ©   (2009-12-21 16:02) [3]

самый просто способ - бить рабочее поле на мелкие квадратики и волной искать путь, а потом по нему уже прокладывать линию... ну либо долгий перебор объектов...


 
Б   (2009-12-21 16:33) [4]


> она там прокладывает путь среди компонентов, под прямыми
> углами


А ну да.
Тогда сама отрисовка линии готова. ;)


 
Б   (2009-12-21 16:43) [5]

http://mirgames.ru/articles/base/pathfind.html


 
AntonioBanderas   (2009-12-21 17:34) [6]


> Б   (21.12.09 16:43) [5]


> @!!ex ©   (21.12.09 16:02) [3]

Волновым  мне не нужно (искать нечего),
сделаю изгибы массивом Нодов(X,Y).

а не укажите на ошибку:
при закарытии формы ошибка Access Violation
ругается видимо на это: FPaintField := Pointer(AOwner);

полный код:

unit Lines;

interface

uses Controls, ExtCtrls, Graphics;

type
 TPoint = packed record
   X: Integer;
   Y: Integer;
 end;

 TNodes = array[0..255] of TPoint;

 TStretchLine = class(TObject)
 private
   FPaintField: Pointer;
   FStart: TPoint;
   FFinish: TPoint;
   FNodes: TNodes;
   FNodeCount: Integer;
 public
   constructor Create(AOwner: TPaintBox);
   destructor Destroy; override;

   procedure Paint;

   property Start: TPoint read FStart write FStart;
   property Finish: TPoint read FFinish write FFinish;
   property Nodes: TNodes read FNodes write FNodes;
   property PaintField: Pointer read FPaintField write FPaintField;
 end;

implementation

constructor TStretchLine.Create(AOwner: TPaintBox);
begin
 inherited Create;
 FPaintField := Pointer(AOwner);
end;

destructor TStretchLine.Destroy;
begin
 inherited Destroy;
end;

procedure TStretchLine.Paint;
begin
 TPaintBox(FPaintField).Canvas......
end;

end.


 
Б   (2009-12-21 18:01) [7]

TPaintBox - это уже указатель.
Зачем нужен указатель на указатель?
Да и к тому же отлично известен тип Owner"а.
Поэтому FPaintField сделать TPaointBox"ом.


 
Б   (2009-12-21 18:04) [8]


> Волновым  мне не нужно (искать нечего),


Как нечего?
Имеется точка старта, финишная точка.
Найти мин. короткий путь, обходя... что там у Вас?
И по пути рисовать соед. линию. Всё.

P.S. Тип TPoint уже существует.


 
AntonioBanderas   (2009-12-21 18:17) [9]


> P.S. Тип TPoint уже существует.

зачем подключать целый модуль Windows

> TPaintBox - это уже указатель.

и явно тоже если указыть, та же ошибка, просто пробовал нетипизированный


 
DVM ©   (2009-12-21 18:39) [10]


> зачем подключать целый модуль Windows

можно подумать, что если ты его не подключишь он в твоей программе не будет подключен.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
11-1213530831
Artlav
2008-06-15 15:53
2010.03.07
RichEdit: Синхронизация и ограничения.


15-1261603824
Юрий
2009-12-24 00:30
2010.03.07
С днем рождения ! 24 декабря 2009 четверг


9-1183152132
ElectriC
2007-06-30 01:22
2010.03.07
Мобильные игры


1-1239551806
Student
2009-04-12 19:56
2010.03.07
Сохранение и поиск в Web странице


2-1262794714
antonn
2010-01-06 19:18
2010.03.07
запуск консольной утилиты с передачей ей параметра в OEM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский