2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557

При нажатии на Image построить линию к другому выбранному Image

12.04.2015, 14:42. Показов 1623. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Собственно сделано перемещение Image'ов. Нужно сделать следующее: при нажатии на Image1 началась строиться линия от него, до выбранного другого Image (например до Image2). Скорей всего через событие OnClick. Но не понимаю как реализовать...И нужно чтобы после построения линии и последующем перемещении Image'ов, линия не стиралась.

Текст программы

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var
  Form1: TForm1;
  x01,y01,x02,y02: integer;
  move1,move2: boolean;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Canvas.RoundRect(10,10,200,100,20,20);
  Image1.Canvas.TextOut(55,45,'Текст 1');
 
  Image2.Canvas.RoundRect(10,10,200,100,20,20);
  Image2.Canvas.TextOut(55,45,'Текст 2');
end;
 
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if button <> mbLeft then
    move1:=false //если нажали не левой кнопкой, то перемещать не будем!
  else
  begin
    move1:=true;
    x01:=x; //запоминаем начальные координаты
    y01:=y; //запоминаем начальные координаты
  end;
end;
 
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if move1 then
  begin
    image1.Left:=image1.Left+x-x01; // Изменяем позицию левого края
    image1.Top:=image1.Top+y-y01; // Изменяем позицию верхнего края
  end;
end;
 
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  move1 := false;
end;
 
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if button <> mbLeft then
    move2:=false //если нажали не левой кнопкой, то перемещать не будем!
  else
  begin
    move2:=true;
    x02:=x; //запоминаем начальные координаты
    y02:=y; //запоминаем начальные координаты
  end;
end;
 
procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if move2 then
  begin
    image2.Left:=image2.Left+x-x02; // Изменяем позицию левого края
    image2.Top:=image2.Top+y-y02; // Изменяем позицию верхнего края
  end;
end;
 
procedure TForm1.Image2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  move2 := false;
end;
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2015, 14:42
Ответы с готовыми решениями:

Надо что бы при нажатии на какой либо Image с картинкой, картинка перекидывалась в пусто Image, а Image на который нажали исчезал.
Имеется 4 Image в 3 из них находятся картинки, а 4 пустой. Надо что бы при нажатии на какой либо Image с картинкой, картинка перекидывалась...

Drag and Drop с Image. Растягивает окно при перемещении Image
Растягивает окно формы при перемещении Image. Как избавится от такого недуга )

Смена Image при нажатии на button
Добрый вечер. Мне нужно при первом нажатии кнопки смена ее картинки из Resources, а потом при повторном нажатии смена картинки на...

7
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
12.04.2015, 17:27
вот еще один ты
сначала делать, потом думать
Соединение двух Timage линией и последующее перемещение
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
13.04.2015, 17:19  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
вот еще один ты
сначала делать, потом думать
Соединение двух Timage линией и последующее перемещение
Что-то там совсем ничего не понятно...
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
13.04.2015, 17:56
сформулирую основную мысль
босс должен быть один
если рисует библиотека VCL, то она должна рисовать всё - и TImage и палки между ними
выясняется, что палок в VCL нет
значит и использовать её не удастся.
Значит, нужно просто рисовать все на PaintBox самостоятельно
просто поверь, по сравнению с теми граблями, на которые ты сейчас залазишь, это гораздо лучше...

поиск
0
5 / 5 / 1
Регистрация: 04.06.2013
Сообщений: 89
14.04.2015, 13:56
Если без объектов, то ввести глобальную переменную "соединение". Если фолс, то при клике меняется на тру и куда-то сохраняет координаты, если тру -- меняется на фолс, проводится линия от сохранённой точки к новой.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
14.04.2015, 16:13
Цитата Сообщение от Oceloto Посмотреть сообщение
ввести глобальную переменную "соединение"
вот бы бил бы по рукам без устали за глобальные переменные
привыкните жить в мире ООП
форма - это класс, объектов этого класса можно создать 100500
и все они будут лазить в глобальную переменную??
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 557
18.04.2015, 15:04  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
Значит, нужно просто рисовать все на PaintBox самостоятельно
Т.е. нужно на ОДНОМ? PaintBox всё рисовать? А как тогда отдельно перемещать нужный прямоугольник к примеру?
А то пока сделал с PaintBox, но это всё тоже самое что и TImage.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
18.04.2015, 23:57
вот в этом посте файл Cinema.7z

Перетаскивание изображений со StringGrid-а на Image
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2015, 23:57
Помогаю со студенческими работами здесь

При нажатии на Label, переместить Image
у меня есть Image и под ним Label, как можно сделать что при нажатии на Label, Image переместился в правую сторону?

Отрисовка частиц на Image при нажатии Button
доброе, уже почти утро))) помогите пожалуйста с кодом, нужно чтобы частицы рисовались на Image при нажатии кнопки, а затем при нажатии...

Движение Image при нажатии стрелок на клавиатуре
Здравствуйте. Помогите пожалуйста. У меня есть Image1 я хочу что бы при нажатии стрелок на клавиатуре он двигался. Если стрелка нажата...

Отображение картинки в другом окне при нажатии на image
Добрый всем день! Подскажите пожалуйста, как можно реализовать открытие картинки в новом окошке, при нажатии определенного Image???

Как программно удалить image при нажатии на кнопку
как програмно удалить image при нажатии на кнопку помогите пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru