Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Линия между pictureBox  (Прочитано 11709 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Gor
Постоялец

ru
Offline Offline

« : 30-03-2018 18:37 » 

Здравствуйте!

Как можно между тремя pictureBox’ми (круг, треугольник, квадрат) на форме провести линию, при чем фигуры идут в нужной мне последовательности.
При нажатии кнопки1 появляется 1-ый pictureBox, после нажатия кнопки2  2-ой pictureBox, между ними автоматически рисуется линия. После нажатия кнопки3 3-й pictureBox и линия между 2-ым и 3-им pictureBox’ми.
У меня получается либо строго, например, круг----треугольник----квадрат, либо треугольник между фигурами, все соединены друг с другом.
Вопрос, конечно широкий. Но, мысль может, кто бросит, как это сделать или где можно посмотреть…

Спасибо.
PS Работаю на C#.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 30-03-2018 19:56 » 

"Нам бы схемку, аль чертёж" (с)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 30-03-2018 19:59 » 

Макет какой-нибудь есть? Что означает линия? Как она должна выглядеть? Непонятно описано.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 30-03-2018 22:47 » 

Ну, вы тупые (с)
Картинку им подавай..

нарисовали первую картинку - тишина
Нарисовали вторую Бац!!! они соединились ЛИНИЕЙ
Рисуем третью - она со второй - БАЦ и линия

После добавления в список, должна быть показана связь между элементами, а какой там вид картинки уже не имеет значения..

Я без понятия что такое pictureBox, но подозреваю, что существует событие - конец рисования, и человек таки рисует линию
Но рисует ее в только ему понятных координатах
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 30-03-2018 23:26 » 

Слав, в общих чертах, как бы я для себя делал, это понятно. А вот что хочет ТС, я не понял. У каждого своя хотелка.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 31-03-2018 20:31 » new

Да уж какое там событие... Всё просто. Три кнопки, нажимаешь и "бац". Меня вот это в ступор вводит:
У меня получается либо строго, например, круг----треугольник----квадрат, либо треугольник между фигурами, все соединены друг с другом.

А линия горизонтальная или вертикальная? Если горизонтальная, то в первом "например" проблема вроде бы решена, но
Вопрос, конечно широкий.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 01-04-2018 05:59 » 

Джон, я бы в виде фильма оформил. Но нужно нанимать режиссёра
Записан

Gor
Постоялец

ru
Offline Offline

« Ответ #7 : 01-04-2018 15:07 » 

Один из вариантов что я ваял

Код: (C#)
Point p1 = new Point();
Point p2 = new Point();
Point p3 = new Point();

bool isDragging = false;
int currentX, currentY;

PictureBox pictureBoxEllips;
PictureBox pictureBoxRect;
PictureBox pictureBoxTrian;

List<Point> lPoint = new List<Point>();

..................................................

void кнопка1()
        {
            pictureBoxEllips = new PictureBox();
            pictureBoxEllips.Size = new Size(60, 60);
            pictureBoxEllips.BackColor = Color.White;

            Bitmap ell = new Bitmap("ell.bmp");
            pictureBoxEllips.Image = (Image)ell;
            this.pictureBoxEllips.Cursor = Cursors.Hand;

            this.pictureBoxEllips.MouseDown += new MouseEventHandler(this.pictureBoxEllips_MouseDown);
            this.pictureBoxEllips.MouseMove += new MouseEventHandler(this.pictureBoxEllips_MouseMove);
            this.pictureBoxEllips.MouseUp += new MouseEventHandler(this.pictureBoxEllips_MouseUp);
        }

void кнопка2()
        {
            pictureBoxTrian = new PictureBox();
            pictureBoxTrian.Size = new Size(60, 60);
            pictureBoxTrian.BackColor = Color.White;

            Bitmap trian = new Bitmap("trian.bmp");
            pictureBoxTrian.Image = (Image)trian;
            this.pictureBoxTrian.Cursor = Cursors.Hand;

            this.pictureBoxTrian.MouseDown += new MouseEventHandler(this.pictureBoxTrian_MouseDown);
            this.pictureBoxTrian.MouseMove += new MouseEventHandler(this.pictureBoxTrian_MouseMove);
            this.pictureBoxTrian.MouseUp += new MouseEventHandler(this.pictureBoxTrian_MouseUp);
        }

void кнопка3 ()
        {
            pictureBoxRect = new PictureBox();
            pictureBoxRect.Size = new Size(60, 60);
            pictureBoxRect.BackColor = Color.White;

            Bitmap rect = new Bitmap("rect.bmp");
            pictureBoxRect.Image = (Image)rect;
            this.pictureBoxRect.Cursor = Cursors.Hand;

            this.pictureBoxRect.MouseDown += new MouseEventHandler(this.pictureBoxRect_MouseDown);
            this.pictureBoxRect.MouseMove += new MouseEventHandler(this.pictureBoxRect_MouseMove);
            this.pictureBoxRect.MouseUp += new MouseEventHandler(this.pictureBoxRect_MouseUp);
        }

void pictureBoxEllips_MouseDown(object sender, MouseEventArgs e)
        {
            isDragging = true;

            currentX = e.X;
            currentY = e.Y;

            this.Invalidate();
        }
void pictureBoxEllips_MouseMove(object sender, MouseEventArgs e)
        {
            if (isDragging)
            {
                pictureBoxEllips.Top = pictureBoxEllips.Top + (e.Y - currentY);
                pictureBoxEllips.Left = pictureBoxEllips.Left + (e.X - currentX);
            }

            this.Invalidate();
        }
void pictureBoxEllips_MouseUp(object sender, MouseEventArgs e)
        {
            isDragging = false;
        }

void pictureBoxTrian        
        аналогично

void pictureBoxRect
        аналогично

private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (нажата кн.1)
                {
                    pictureBoxEllips.Top = e.Y;
                    pictureBoxEllips.Left = e.X;

                    Controls.Add(pictureBoxEllips);
                }

                if (нажата кн.2)
                {
                    pictureBoxTrian.Top = e.Y;
                    pictureBoxTrian.Left = e.X;

                    Controls.Add(pictureBoxTrian);
                }

                if (нажата кн.3)
                {
                    pictureBoxRect.Top = e.Y;
                    pictureBoxRect.Left = e.X;

                    Controls.Add(pictureBoxRect);
                }
            }

            this.Invalidate();
        }

int i = 0;
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Point[] point = new Point[4];
           

            if (pictureBoxEllips != null)
            {
                p1.Y = pictureBoxEllips.Top + pictureBoxEllips.Size.Height / 2;
                p1.X = pictureBoxEllips.Left + pictureBoxEllips.Size.Width / 2;

                lPoint.Add(p1);
                point = lPoint.ToArray();

                if (i != 0)
                {
                    g.DrawLine(pen, point[i - 1], point[i]);
                }
                else
                {
                    g.DrawLine(pen, point[i], point[i]);
                }
                i++;
            }
            if (pictureBoxTrian != null)
            {
                p2.Y = pictureBoxTrian.Top + pictureBoxTrian.Size.Height / 2;
                p2.X = pictureBoxTrian.Left + pictureBoxTrian.Size.Width / 2;

                lPoint.Add(p2);
                point = lPoint.ToArray();

                if (i != 0)
                {
                    g.DrawLine(pen, point[i - 1], point[i]);
                }
                else
                {
                    g.DrawLine(pen, point[i], point[i]);
                }
                i++;
            }
            if (pictureBoxRect != null)
            {
                p3.Y = pictureBoxRect.Top + pictureBoxRect.Size.Height / 2;
                p3.X = pictureBoxRect.Left + pictureBoxRect.Size.Width / 2;

                lPoint.Add(p3);
                point = lPoint.ToArray();

                if (i != 0)
                {
                    g.DrawLine(pen, point[i - 1], point[i]);
                }
                else
                {
                    g.DrawLine(pen, point[i], point[i]);
                }
                i++;
            }
        }
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines