![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перетаскивание имаджев соединёных линией [D7, XP]
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