Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
1

Рисование на picturebox

02.06.2014, 20:23. Показов 5485. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Собственно, проблемы с сабжем.
Прикладываю проект.
Вложения
Тип файла: rar WindowsFormsApplication1.rar (40.7 Кб, 26 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2014, 20:23
Ответы с готовыми решениями:

Рисование на PictureBox
Вообщем то, есть один квадратный Picturebox, размер 220 * 150. На нём рисуются точки (каждая точка...

рисование в picturebox-е
Izvinite a kak delat tak chto mouseposition vzyal koordinati, a ne mi napisali ee v code? Voobshe...

PictureBox, рисование
Итак, ребятки, очередная проблема. Рисую обычным Graphics graf = pictureBox1.CreateGraphics();...

Рисование в PictureBox
Здравствуйте! Подскажите, как рисовать именно в pictureBox'е, а не по нему? Чтоб, например, мог...

16
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 20:25  [ТС] 2
Добавляю.
Отрисовка просто не происходит. Проверено на двух разных системах.
Видимо, проблема с самом коде.
0
43 / 43 / 19
Регистрация: 30.11.2011
Сообщений: 112
02.06.2014, 20:45 3
А скажите зачем рисовать в отдельном потоке?
Для получения Graphics объекта используйте событие Paint PictureBox'а, где и производите вообще всю отрисовку, потому что CreateGraphics - это старое полотно, которое может тормозить и затираться.
1
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 20:46  [ТС] 4
k0z@k, а можно пример получения Graphics через Paint?
0
43 / 43 / 19
Регистрация: 30.11.2011
Сообщений: 112
02.06.2014, 20:49 5
C#
1
2
3
4
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
       var graphics = e.Graphics;  //вот ваш объект Graphics
}
0
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 20:56  [ТС] 6
k0z@k, k0z@k, и дальше все операции проводим в данном методе?

Добавлено через 5 минут
k0z@k, сейчас попробовал-ноль внимания. Пробовал вот так:
C#
1
2
3
4
5
private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            var gg = e.Graphics;  //вот ваш объект Graphics
            gg.FillEllipse(new SolidBrush(Color.Red), 50, 50, 25, 25);
         }
0
43 / 43 / 19
Регистрация: 30.11.2011
Сообщений: 112
02.06.2014, 21:14 7
Вы же подписали метод на событие Paint PicturexBox'а?
0
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 21:17  [ТС] 8
k0z@k, да. И через пару компиляций таки что-то нарисовалось, сейчас пробую дальше.
Однако, как-то странно система тупит.
0
43 / 43 / 19
Регистрация: 30.11.2011
Сообщений: 112
02.06.2014, 21:21 9
Просто, чтобы что-то рисовать не нужно использовать циклы или отдельные потоки. Событие Paint происходит очень часто и рисовать нужно прежде всего именно в нём. Причём в нём желательно проводить расчёты по минимуму.
0
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 22:51  [ТС] 10
k0z@k, назрел еще один вопрос.
А что делать, если нужно создать анимацию(движение объекта вперед-назад)?
0
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 23:02  [ТС] 11
Конкретизируя вопрос-у нас есть машинка, теперь нужно заставить ее ездить вперед-назад по checkbox-ам.
У меня как-то не особо вышло. Прилагаю проект.
Вложения
Тип файла: rar Lab_5_WFA.rar (44.1 Кб, 18 просмотров)
0
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 23:48  [ТС] 12
Конкретнее с анимацией получилось вот так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (true)
            {
                if (checkBox1.Checked == true)
                {
                    mas.X1 = mas.X1 + 1;
                    Thread.Sleep(300);
                }
                if (checkBox2.Checked == true)
                {
                    mas.X1 = mas.X1 - 1;
                    Thread.Sleep(300);
                }
 
            
            }
Но, сами понимаете, об управлении в реальном времени тут речи быть не может. =)

Добавлено через 17 секунд
Конкретнее с анимацией получилось вот так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (true)
            {
                if (checkBox1.Checked == true)
                {
                    mas.X1 = mas.X1 + 1;
                    Thread.Sleep(300);
                }
                if (checkBox2.Checked == true)
                {
                    mas.X1 = mas.X1 - 1;
                    Thread.Sleep(300);
                }
 
            
            }
Но, сами понимаете, об управлении в реальном времени тут речи быть не может. =)

Добавлено через 7 минут
Сильно нужна помощь, если можете-помогите. Заранее спасибо!
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
02.06.2014, 23:50 13
Бесконечный цикл-то Вам зачем?
Кидаем таймер, итерируем в нём нужное значение, поднимаем метод Invalidate на PictureBox. Метод заставит PictureBox себя перерисовать, что и будет "анимацией".
1
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 23:51  [ТС] 14
Spawn, а можно поподробнее, учитывая проект, который я кинул выше?
0
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
02.06.2014, 23:56  [ТС] 15
Только теперь рисование происходит на форме непосредственно.
Вложения
Тип файла: rar Lab_5_WFA.rar (43.8 Кб, 22 просмотров)
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
03.06.2014, 00:12 16
Лучший ответ Сообщение было отмечено Talkoflights как решение

Решение

Изменил проект. Добавил таймер, который изменяет координату X1, чтобы машинка двигалась либо вперёд, либо назад. Везде удалил Graphics. Данный объект возможно передавать только в качестве параметра, забудьте про метод CreateGraphics как будто его вообще не существует.
Вложения
Тип файла: zip Lab_5_WFA.zip (12.1 Кб, 67 просмотров)
1
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
03.06.2014, 00:18  [ТС] 17
Spawn, огромное спасибо, буду разбираться.
0
03.06.2014, 00:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2014, 00:18
Помогаю со студенческими работами здесь

Рисование на pictureBox
Всем привет, на ютубе нашёл интересное видео, где описывается рисование int X; ...

Рисование в PictureBox
у меня стоит задача сделать Paint как на ХР, хочу сделать карандаш, но с линией не получаться,...

Рисование в PictureBox
Почему при открытии формы не рисует в picturebox? По клику работает, а по открытию формы тот же код...

Рисование на PictureBox
Здравствуйте! У меня в PictureBox есть изображение (назовем его "img"). На самом контролле я рисую...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru