Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Технологии программирования > Программирование графики
Перезагрузить страницу Линия между pictureBox
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Bar Bar вне форума
Member
 
Сообщений: 42
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2007
По умолчанию Линия между pictureBox - 30.03.2018, 22:42

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

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

Спасибо.
PS Работаю на C#.
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,001
Сказал(а) спасибо: 19
Поблагодарили 870 раз(а) в 854 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 30.03.2018, 23:25

1. Отказаться от PictureBox для вывода отдельных изображений. Рисовать всё на Bitmap, который уже выводить на форму.
2. Рисовать на canvas формы в событии OnPaint (или типа того). То ещё веселье.


Как прикреплять картинки к сообщениям: http://www.hardforum.ru/t116562
Ответить с цитированием
  (#3 (permalink)) Старый
Bar Bar вне форума
Member
 
Сообщений: 42
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2007
По умолчанию 01.04.2018, 19:37

Один из вариантов, что я ваял (система не принимает весь код)

Код:
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();
.........................
}
voidкнопка3 ()
{
pictureBoxRect = new PictureBox();
........................
}

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 (нажата кн.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++;
}
}
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,001
Сказал(а) спасибо: 19
Поблагодарили 870 раз(а) в 854 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 01.04.2018, 19:51

Система принимает файлы вложений к сообщениям.
А в коде много лишнего.


Как прикреплять картинки к сообщениям: http://www.hardforum.ru/t116562
Ответить с цитированием
  (#5 (permalink)) Старый
Bar Bar вне форума
Member
 
Сообщений: 42
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.12.2007
По умолчанию 02.04.2018, 14:45

Да, вполне возможно. Может, что посоветуешь?
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
График в PictureBox ashtone9130 Visual C++ 1 27.12.2011 18:50
Линия vanek_uarn Pascal 2 18.05.2011 22:04
Скроллинг для PictureBox imported_Maximys .NET 1 03.01.2011 14:56
Picturebox, анимация как ее делать brokit Visual Basic 1 22.10.2010 03:40
Динамически добавить PictureBox на форму Ігорко .NET 5 26.03.2009 16:25
Как сохранить рисунок на pictureBox SidorovaNata .NET 4 26.01.2009 19:45
Линия в Qt3 как ее нарисовать bilboke Trolltech Qt 4 28.11.2008 23:10
Как скопировать в объект PictureBox pic1 картинку из объекта PictureBox pic2 целиком night-stels Visual C++ 5 25.08.2008 16:44
Как сохранить график построенный на picturebox proga Вопросы начинающих программистов 0 06.03.2007 11:41
Прокрутка в PictureBox Sane]{ Visual Basic 0 26.02.2007 20:06
PictureBox Sane]{ Visual Basic 1 23.02.2007 01:30
PictureBox массив загружается. Reft Visual Basic 0 08.11.2004 00:06



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов