Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перетаскивание имаджев соединёных линией [D7, XP]


Страницы:   1 2

b86 ©   (2010-09-16 09:38:00) 

Здравствуйте. У меня такая задача, есть два имеджа. Надо что бы в процессе перетаскивания между ними была нарисована линия, т.е. если имейджы дальше друг от друга  - линия длинее, ближе - линия короче. Подскажите, пожалуйста.


b86   (2010-09-16 11:25:00) [21]

Мой вопрос, как сделать так что бы линии тянулись или сокращались при перетаскивание? как сделать, что бы было видно именно её изменения в процессе перетаскивания? Мне не надо экономить байты и огибать препятствия.


И. Павел   (2010-09-16 11:23:00) [22]

> [9] Ega23 ©  

Ну я и ответил в [6].
Если нужна скорость и минимальный объем, то в принципе ООП это вообще лишнее.
C TImage можно работать на форме в DesignTime, этим он удобен. Если эта возможность не нужна, то конечно его использовать нет смысла.


Ega23   (2010-09-16 11:17:00) [23]


> и невидимым TImage


Вот это я как-то не понимаю. Давай ещё для загрузки текстового файла TMemo создавать будем. А чо, там тоже TStrings есть.
Чем не код:
with TMemo.Create(nil) do
begin
 try
   Lines.LoadFromFile('C:\1.txt');
   Lines.Delete(0);
   Lines.SaveToFile('C:\1.txt');
 finally
   Free;    
 end;
end;

?


И. Павел   (2010-09-16 11:06:00) [24]

Я имею ввиду что холст, на котором будет вестись предварительное рисование можно выбрать разным - и невидимым TImage (если там есть фон - у меня так было, поэтому использовал его, все равно в нем именно битмап и работал), и динамическим bitmap. Главное чтобы он нигде не рисовался и имел возможность скопироваться на видимую канву.


Ega23   (2010-09-16 10:56:00) [25]


> Ну если нужно экономить каждый байт и не нужно использовать
> начальную канву в Design Time, то можно и так.


Что-то, друк, я не совсем понимаю, что ты хочешь сказать.


И. Павел   (2010-09-16 10:47:00) [26]

> Может таки виртуальный битмап?

Ну если нужно экономить каждый байт и не нужно использовать начальную канву в Design Time, то можно и так.


Ega23   (2010-09-16 10:43:00) [27]


> Сначала создаете канву (нгапример на TImage), а потом ее
> выводите (копируете TImage на канву формы).


Может таки виртуальный битмап?


Anatoly Podgoretsky   (2010-09-16 09:59:00) [28]

А задача похоже на школьную, задали решить?


Anatoly Podgoretsky   (2010-09-16 09:58:00) [29]

> b86  (16.09.2010 09:38:00)  [0]

А вопрос то какой?


И. Павел   (2010-09-16 09:46:00) [30]

> Подскажите, пожалуйста.

Поскольку вопроса как такового нет, то объясню самую суть процесса :)

> т.е. если имейджы дальше друг от друга  - линия длинее,
> ближе - линия короче.

Может быть будет удобнее рисавать сразу все (блоки и связи между ними) на одной канве? А то TImage при перетаскивании может мелькать (даже при двойной буферизации).
А что касается линии, то наверное, будет удобно хранить связи между блоками в графе, например, если 1 и 3 блоки связаны, то граф будет выглядеть так:

001
000
100


А при перетаскивании блока смотреть - с чем он связан, и перери совывать эти линии (ну или все сразу перерисовывать, если линии могут проходить через блоки). Сначала создаете канву (нгапример на TImage), а потом ее выводите (копируете TImage на канву формы).
Ну а если нужно, чтобы линии связей были ломанными и обходили блоки, то придется их хранить и придумывать алгоритм для "обхода препятствий".


12   (2010-09-16 09:42:00) [31]

canvas.lineto


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо