Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/56: Рейтинг темы: голосов - 56, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 42

Добавление рисунка на панель

18.05.2013, 14:38. Показов 11172. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть кнопка на панели инструментов, которая выводит изображение на панель, скажите как можно сделать, чтобы эта кнопка выводила изображение каждый раз, когда я ее нажимаю, т.е. делала еще один рисунок и я мог перемещать по панели каждый рисунок отдельно. Второй день мучаюсь уже не могу понять!
C#
1
2
3
4
5
6
7
 private void toolStripButton2_Click(object sender, EventArgs e)
        {
            PictureBox pb = new PictureBox();
            pb.SizeMode = PictureBoxSizeMode.AutoSize;
            pb.Parent = panel1;
            pb.Image = Image.FromFile(@"C:\Users\Виталий\Desktop\dd.png");
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2013, 14:38
Ответы с готовыми решениями:

Добавление фонового рисунка
При добавление рисунка в качестве фона формы, рисунок закрывает все действующие объекты Option Compare Database Private Sub...

Добавление рисунка в базу mysql
У меня есть форма: <form method="post" action=""> <input type="file" name="for_upload"><br><br> <input type="submit"...

Access 2003, добавление рисунка на форму
добрый вечер, форумчане, есть такая задача: добавлять на форму в Access 2003 фотографии. Нашла вот такую статью:...

11
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
18.05.2013, 16:10
ты не выводишь изображение на панель. ты присваиваешь свойству панели Image значение файла с изображением.

чтоб выводить каждый раз что-то новое, то лучше пытаться что-либо нарисовать на панели с помощью классов Graphic и Bitmap, но перемещать добавленные изображения это не даст. единственное что могу предложить - добавлять не изображение на панель, а добавлять новую панель с изображением. панель по крайней мере двигать можно.
0
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 42
18.05.2013, 16:24  [ТС]
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
ты не выводишь изображение на панель. ты присваиваешь свойству панели Image значение файла с изображением.

чтоб выводить каждый раз что-то новое, то лучше пытаться что-либо нарисовать на панели с помощью классов Graphic и Bitmap, но перемещать добавленные изображения это не даст. единственное что могу предложить - добавлять не изображение на панель, а добавлять новую панель с изображением. панель по крайней мере двигать можно.
а если по пробовать добавить PictureBox сразу с картинкой на панель и тягать уже его? Но как создавать дубликаты PictureBox при каждом нажатии кнопки?
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
18.05.2013, 16:55
да так-же как и другие объекты:

C#
1
2
3
4
PictureBox box1 = new PictureBox();
box1.Image=<Image>;
panel1.Controls.Add(box1);//панель в которую заносится изображение
box1.Location=new Point(3,3);//месторасположение изображения
перемещать как-то так:
C#
1
panel1.Controls[<нужное изображение, как получить хз>].Location=new Point(<нужные координаты>);
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
18.05.2013, 17:11
Цитата Сообщение от Rostik2013 Посмотреть сообщение
У меня есть кнопка на панели инструментов, которая выводит изображение на панель, скажите как можно сделать, чтобы эта кнопка выводила изображение каждый раз, когда я ее нажимаю, т.е. делала еще один рисунок и я мог перемещать по панели каждый рисунок отдельно. Второй день мучаюсь уже не могу понять!
C#
1
2
3
4
5
6
7
 private void toolStripButton2_Click(object sender, EventArgs e)
        {
            PictureBox pb = new PictureBox();
            pb.SizeMode = PictureBoxSizeMode.AutoSize;
            pb.Parent = panel1;
            pb.Image = Image.FromFile(@"C:\Users\Виталий\Desktop\dd.png");
        }
по факту как вижу:
надо динамический создавать на панели PictureBox с картинкой, и хранить его в например в каком нт List<PictureBox>
дале когда вы опять нажимаете на кнопку, если хотите компию придыдущего изображения, достаете его из списка и опять динамический кидаете на форму новый picturebox

при это если вы хотите их тягать надо подписывать их на свои события, которые будут обрабатывать перемещение PictureBox по panel.

как создавать дубликаты:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private List<PictureBox> ss;
 
........
 
 
//на кнопку
if(ss.Count == 0)
{
  var p = new PictureBox()
  ... //задаем все св-ва
 
  panel1.controls.Add(p);
  ss.Add(p);
}
else
{
 var p = new PictureBox();
 var p.Location = new Point(ss[ss.Count-1].Location.X,ss[ss.Count-1].Location.Y); //и так далее вытягиваем нужные св-ва
 
  ... //задаем все св-ва
 
  panel1.controls.Add(p);
  ss.Add(p);
}
примерно так, писал без компилятора, мб где то немного ошибся
1
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 42
18.05.2013, 18:20  [ТС]
Цитата Сообщение от Aloir Посмотреть сообщение
по факту как вижу:
надо динамический создавать на панели PictureBox с картинкой, и хранить его в например в каком нт List<PictureBox>
дале когда вы опять нажимаете на кнопку, если хотите компию придыдущего изображения, достаете его из списка и опять динамический кидаете на форму новый picturebox

при это если вы хотите их тягать надо подписывать их на свои события, которые будут обрабатывать перемещение PictureBox по panel.

как создавать дубликаты:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private List<PictureBox> ss;
 
........
 
 
//на кнопку
if(ss.Count == 0)
{
  var p = new PictureBox()
  ... //задаем все св-ва
 
  panel1.controls.Add(p);
  ss.Add(p);
}
else
{
 var p = new PictureBox();
 var p.Location = new Point(ss[ss.Count-1].Location.X,ss[ss.Count-1].Location.Y); //и так далее вытягиваем нужные св-ва
 
  ... //задаем все св-ва
 
  panel1.controls.Add(p);
  ss.Add(p);
}
примерно так, писал без компилятора, мб где то немного ошибся
в else не понял про "задаем все свойства"
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
18.05.2013, 18:30
в pictureBox отсуствует конструктор копирования...

поэтому чтобы получить копию предыдущего обьекта(PictureBox) достаем его из списка нашего
создаем новый PictureBox и ставим ему такие же св-ва как у нашего PictureBox в списке.
1
0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 42
19.05.2013, 00:45  [ТС]
Цитата Сообщение от Aloir Посмотреть сообщение
в pictureBox отсуствует конструктор копирования...

поэтому чтобы получить копию предыдущего обьекта(PictureBox) достаем его из списка нашего
создаем новый PictureBox и ставим ему такие же св-ва как у нашего PictureBox в списке.
я нечего не понял((((((

Добавлено через 5 часов 56 минут
Цитата Сообщение от Aloir Посмотреть сообщение
в pictureBox отсуствует конструктор копирования...

поэтому чтобы получить копию предыдущего обьекта(PictureBox) достаем его из списка нашего
создаем новый PictureBox и ставим ему такие же св-ва как у нашего PictureBox в списке.
panel1.controls.Add(p); - почему ругается на слово controls
0
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
19.05.2013, 00:56
Цитата Сообщение от Rostik2013 Посмотреть сообщение
я нечего не понял((((((

Добавлено через 5 часов 56 минут


panel1.controls.Add(p); - почему ругается на слово controls
panel1.Controls.Add(); смотрите иногда подсказки студии, говорил же что пишу без компилятора
1
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
19.05.2013, 01:27
вот вам немного накидал, тока Button на нужный вам контрол замените, и чтобы красиво двигать, поидее придется заюзать WinApi, а то координаты мышки при зажатой клавище плохо отлавливаются
Вложения
Тип файла: rar WindowsFormsApplication2.rar (13.9 Кб, 38 просмотров)
1
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 4
13.06.2013, 03:56
Доброе время суток. А можно поподробней про красиво двигать? я сделал так, что красиво двигается только из начального состояния (см. приложение), а если повторно начать перетаскивать - то начинаются глюки.

PS. Для корректной работы папку M_LABS необходимо поместить в корень диска С (или любую другую директорию, главное поправьте код.
Вложения
Тип файла: rar M_LABS.rar (51.4 Кб, 5 просмотров)
0
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 4
18.06.2013, 01:39
Частично исправил проблему красивости.. но некие недоработки остались...
Вложения
Тип файла: rar M_LABS.rar (51.7 Кб, 36 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2013, 01:39
Помогаю со студенческими работами здесь

Добавление фонового рисунка через jQuery
Всем привет, есть реализация многоуровневого списка с jQuery. Хочу добавить стрелочки right и down к элементам которые имеют подпункты, но...

Сохранение рисунка и добавление новой фигуры
Рисуются в image фигуры квадрат и окружность и нужно: 1. Сохранить эти фигуры в файл 2. Нарисовать еще одну фигуру (треугольник, ромб и...

Добавление обьекта на панель (Swing)
Добрый день. Есть фрейм на нем панель, на этой панели есть кнопка, при нажатии на которую должна появится еще одна кнопка. Кнопка...

Динамическое добавление элементов на панель.
Нужно динамически в цикле добавить определенное количество разных элементов на stackpanel, таких как лейблы, картинки... Желательно с...

Добавление кнопки на панель в виде иконки
Здравствуйте! Вопрос-создаю кнопку на панели из макроса Set MyCBar = CommandBars.ActiveMenuBar Set MyBtn...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru