Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 3

Не прорисовывается картинка на форме из-за Sleep

08.11.2012, 19:26. Показов 1496. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Image setImg()
        {
            Image[] imgArr = new Image[3];
                imgArr [0] = WindowsFormsApplication1.Properties.Resources._1;
                imgArr [1] = WindowsFormsApplication1.Properties.Resources._2;
                imgArr [2] = WindowsFormsApplication1.Properties.Resources._3;
            Random rnd = new Random();
            r = rnd.Next(0,2);
            Image dif = imgArr[r];
            return dif;
        }
 
        public void runImg()
        {
            for (int i = 0; i<= 5; i++)
            {
            Thread.Sleep(1000);
            pictureBox1.Image = setImg(); //Тут ничего не происходит
            Thread.Sleep(1000);
            pictureBox1.Image = WindowsFormsApplication1.Properties.Resources.bg; 
            MessageBox.Show("piu");
            }
При запуске ничего не происходит, т.е. картинка не меняется, но MessageBox показывает. Где я ошибся?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2012, 19:26
Ответы с готовыми решениями:

При Thread.Sleep форма не прорисовывается вовремя
Здравствуйте! Изачаю потока на C#, возникла проблема. Сделал простую прогу, в котрой на форме расположен TextBox и кнопка, при нажатии...

Картинка прорисовывается на форме большим размером
Есть код: private void pictureBox1_Paint(object sender, PaintEventArgs e) { hh = new...

Если создать объект Graphics в модуле или в форме, то картинка прорисовывается не на всю область видимости
Здравствуйте, если создать объект Graphics в модуле или в форме, то картинка прорисовывается не на всю область видимости (будь то рисование...

4
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
08.11.2012, 20:08
Это происходит из-за остановки основного потока, после смены картинки 1ый раз, картинка меняется, но прорисоваться уже не успевает. А во второй раз после смены стоит MessageBox, благодаря которому поток не "засыпает" и успевает прорисовать картинку. Добавьте MessageBox в указанное место и вы увидите результат.
C#
1
2
3
4
5
6
7
8
9
for (int i = 0; i<= 5; i++)
{
   Thread.Sleep(1000);
   pictureBox1.Image = setImg(); //1ый раз
   MessageBox.Show("piu"); //Вот сюда <<<
   Thread.Sleep(1000);
   pictureBox1.Image = WindowsFormsApplication1.Properties.Resources.bg;  //2ой раз
   MessageBox.Show("piu");
}
1
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 3
08.11.2012, 20:19  [ТС]
Спасибо, были такие же подозрения. Как можно обойти это что бы смена картинок происходила быстро ~500 мс?
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
08.11.2012, 20:21
Используйте Timer.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Timer timer = new Timer();
            timer.Interval = 500;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }
 
        public void timer_Tick(object sender, EventArgs e)
        {
            for (int i = 0; i <= 5; i++)
            {
                pictureBox1.Image = setImg(); //1ый раз
            }
        }
 
        public Image setImg()
        {
            Image[] imgArr = new Image[3];
            imgArr[0] = WindowsFormsApplication1.Properties.Resources._1;
            imgArr[1] = WindowsFormsApplication1.Properties.Resources._2;
            imgArr[2] = WindowsFormsApplication1.Properties.Resources._3;
            Random rnd = new Random();
            Image dif = imgArr[rnd.Next(0, 2)];
            return dif;
        }
    }
}
1
0 / 0 / 0
Регистрация: 08.11.2012
Сообщений: 3
08.11.2012, 20:29  [ТС]
Благодарю за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2012, 20:29
Помогаю со студенческими работами здесь

Не прорисовывается новая картинка .jpg в Image
Добрый день! Столкнулся с проблемой перерисовки Image, а собственно не перерисовывается картинка. Картинка в *.jpg ...

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

Перерисовка панели в форме с задержкой Sleep
private void Draw() { Draw1(); Thread.Sleep(3000); Draw2(); Thread.Sleep(3000); Draw3(); } Каждый из методов DrawN задаёт...

Thread.Sleep(): не видны визуальные изменения на форме между слипами
Проблема: не вижу смену цвета ячеек, а по логике должны меняться каждые 5 секунд(столько выполняется, или вернее спит, метод, а потом...

Прозрачная картинка на форме
Приветствую всех . Возникла проблема хочу создать прозрачную форму что в прочем сделал. C прозрачной картинкой - на данном этапе...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru