Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269

ProgressBar непрерывная работа

18.09.2019, 16:03. Показов 5813. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
(wpf) Загружаю форму

C#
1
2
3
4
5
private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            loadFileProgressBar.IsIndeterminate = false;
            ///....
        }
При клике на кнопку должен непрерывно работать прогрессбар, при изменении в xaml работает, или UserControl_Loaded true работает.
Но в при клике не работает, я где-то ошибся...

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 async void DateButton_Click(object sender, EventArgs e)
        {
            loadFileProgressBar.IsIndeterminate =  true;
            string path = (sender as Button)?.Tag?.ToString();
 
            try
            {
                string text = "";
 
                await Task.Run(() =>
                {
                    text = File.ReadAllText(path);
 
                    viewLogTextBox.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        viewLogTextBox.Text = text;
                        //viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
                        scrollViewerTextBox.ScrollToBottom();
                        loadFileProgressBar.IsIndeterminate = false;
                    }));
                });
            }
            catch { }
        }
Добавлено через 5 минут

Не по теме:

Оу, юбилейное сообщение на форуме

0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2019, 16:03
Ответы с готовыми решениями:

Работа с ProgressBar
Как привязать прогрессбар к выполнению записи в файл? Идет запись в файл: StreamWriter sw = new StreamWriter("output.txt",...

Непрерывная работа программы
Сделал программу, которая рассчитывает траекторию маятника. Дело в том, что программа работает пока не пройдет определенное время. ...

Работа с progressbar
Знаю что опять тупой вопрос, но очень нужем мне и еще 2 (как минимум) человек. Короче, кинул на форму progressbar1 и скрил его. Потом при...

53
78 / 67 / 13
Регистрация: 04.10.2018
Сообщений: 330
18.09.2019, 16:12
А так?
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
private async void DateButton_Click(object sender, EventArgs e)
        {
            loadFileProgressBar.IsIndeterminate =  true;
            string path = (sender as Button)?.Tag?.ToString();
 
            try
            {
                string text = "";
 
                await Task.Run(() =>
                {
                    text = File.ReadAllText(path);
 
                    viewLogTextBox.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        viewLogTextBox.Text = text;
                        //viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
                        scrollViewerTextBox.ScrollToBottom();
                        loadFileProgressBar.IsIndeterminate = false;
 Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
                                          new Action(delegate { }));
                    }));
                });
            }
            catch { }
}
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
18.09.2019, 17:36  [ТС]
Varyna, так тоже не работает (

Добавлено через 2 минуты

Не по теме:

Ужс, сайт досят что-ли



Добавлено через 7 минут
Я уверен что это что-то с потоками, потому что если зделать
C#
1
2
scrollViewerTextBox.ScrollToBottom();
                        loadFileProgressBar.IsIndeterminate = true;
, то работает

Добавлено через 15 секунд
Я уверен что это что-то с потоками, потому что если зделать
C#
1
2
scrollViewerTextBox.ScrollToBottom();
                        loadFileProgressBar.IsIndeterminate = true;
, то работает

Добавлено через 44 минуты
Я ещё пробовал разные варианты, но получается так будто включить я могу, но выключить не получается

Добавлено через 9 минут
Как я только не извращался , но как только пытаюсь запихать false он его будто игнорит(
(и из разных методов запускал, задач, Dispatcher)

Добавлено через 7 минут
Странно, ещё у моего св-ва нет нужных методов (мб из-за этого?)
C#
1
2
3
4
5
6
private string _viewLogTextBox;
        public string ViewLogTextBox
        {
            get { return _viewLogTextBox; }
            set { _viewLogTextBox = value; OnPropertyChanged(); }
        }
XML
1
2
3
4
5
6
7
8
9
10
<Grid Grid.Row="2">
            <ScrollViewer Margin="5" x:Name="scrollViewerTextBox">
                         <!--TextChanged="viewLogTextBox_TextChanged"--> 
                <TextBox x:Name="viewLogTextBox" 
                         Text="{Binding ViewLogTextBox}"
                         TextWrapping="Wrap"
                         Background="LightGray"
                         IsReadOnly="True"/>
            </ScrollViewer>
        </Grid>
0
Заблокирован
18.09.2019, 20:15
ShmelVG, не могу зайти в свой аккаунт.
Открыл новый - не знаю как надолго затянется решение с основным.

Цитата Сообщение от ShmelVG Посмотреть сообщение
Я уверен что это что-то с потоками, потому что если зделать
Да, скорее всего так.

C#
16
17
18
19
                        viewLogTextBox.Text = text;
                        //viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
                        scrollViewerTextBox.ScrollToBottom();
                        loadFileProgressBar.IsIndeterminate = false;
Вот это , как я понял, все контролы?
Если да, то сразу возникает , пару вопросов.

1) Почему работаете без привязок? Вам не надоело самому себе препятствия придумывать?

2) Что за потребность задавать значения из другого потока? Вы посмотрите что за дичь... костыли делаете! Вызываете из основного потока другой поток, только для того чтобы задать оттуда значения свойствам элементов используя Dispatcher. Зачем такие кружева? Чтобы веселее было?

3) Я не пойму надобности здесь в асинхронном методе. Только для считывания одного файла? У вас что этот файл сотни мегабайт занимает?

Теперь возможное решение. Протестировать не могу - для этого нужно ваше приложение с вашими данными.
Но попробуйте так, если такая уж настоятельная необходимость в чтении файла в другом потоке.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
         private async void DateButton_Click(object sender, EventArgs e)
        {
            loadFileProgressBar.IsIndeterminate =  true;
            string path = (sender as Button)?.Tag?.ToString();
 
            try
            {
                string text = "";
 
                await Task.Run(() => text = File.ReadAllText(path));
 
                // Код после await будет выполнятся в том же потоке, что и до await
                viewLogTextBox.Text = text;                                   // Здесь поставьте точку останова
                //viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length; // и пошагово проверьте
                scrollViewerTextBox.ScrollToBottom();                         // какие значения присваиваются
                loadFileProgressBar.IsIndeterminate = false;
              }
            catch { }
        }
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
19.09.2019, 10:21  [ТС]
ЭлдХасп, К сожалению такой вариант не сработал.

1) Я знаю на сколько это убого, просто представьте что такое задание. Относитесь это как к плохому эксперименту
2) Я просто переношу приложение c WF, нужно максимально сделать код "похожим".
3) Как ни странно, файлы в 5-10 Мб уже достаточно долго загружает (на мой взгляд).

Смысл вот в чем, в WrapPanel отображаются кнопки с датой, их кол-во зависит от кол-ва логов в директории, при клике на кнопку, ProgressBar должен постоянного грузится (будто бесконечно(.IsIndeterminate = true)), и после того как файл отобразился в TextBox и скролл прокрутил вниз файла, остановить работу ProgressBar (либо сделать просто остановить работу прогрессбара при загрузке файла, файлы в 9,5 Мб открывает около 5-8 секунд )

Не по теме:

Надеюсь скоро восстановите акк и всё будет хорошо



Добавлено через 27 минут
ЭлдХасп, в WF было так и всё работало
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
38
39
40
41
42
private void DateButton_Click(object sender, EventArgs e)
        {
            string path = (sender as Button)?.Tag?.ToString();
 
            try
            {
                Task.Run(() =>
                {
                    loadFileProgressBar.BeginInvoke(new Action(() =>
                    {
                        loadFileProgressBar.Value = 100;
                        loadFileProgressBar.Style = ProgressBarStyle.Marquee;
                    }));
                });
 
                string text = "";
 
                Task.Run(() =>
                {   
                    text = File.ReadAllText(path);
 
                    viewLogTextBox.BeginInvoke(new Action(() =>
                    {
                        viewLogTextBox.Text = text;
                        viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
                        viewLogTextBox.ScrollToCaret();
                    }));
                });
            }
            catch { }
        }
 
        private void viewLogTextBox_TextChanged(object sender, EventArgs e)
        {
            Task.Run(() =>
            {
                loadFileProgressBar.BeginInvoke(new Action(() =>
                {
                    loadFileProgressBar.Style = ProgressBarStyle.Blocks;
                }));
            });
        }
0
Заблокирован
19.09.2019, 10:54
Цитата Сообщение от ShmelVG Посмотреть сообщение
1) Я знаю на сколько это убого, просто представьте что такое задание. Относитесь это как к плохому эксперименту
Дело не только в том, что это убого.
При использовании привязок часть работы по по отображению данных WPF платформа берёт на себя.
При работе из C# напрямую с элементами эту часть работы тоже надо прописывать.
А так как, так никто не делает, то невозможно знать где,какие грабли будут в очередной раз.
И при выявлении проблем неизвестны способы их решения.
Не найдёшь их не в документации, не в инете.
Приходится всё решать методом "научного тыка" и без гарантии результата.
А это масса времени потерянного в холостую.

И не может быть задания (в программировании) намерено ограничивающего реализацию непригодными инструментами.

Цитата Сообщение от ShmelVG Посмотреть сообщение
2) Я просто переношу приложение c WF, нужно максимально сделать код "похожим".
Я это помню. Но ваше приложение даже для WinForm "кривое". А для WPF это, вообще, дурдом.
И неужели оно должно быть похожим вплоть до синтаксиса обращения к элементам.
Разве нельзя каждое обращение к элементу в исходном приложении заменить на обращение к свойству VM?
А из Окна просто задать привязки к этим свойствам?

Цитата Сообщение от ShmelVG Посмотреть сообщение
3) Как ни странно, файлы в 5-10 Мб уже достаточно долго загружает (на мой взгляд).
Не должно быть так.
Файлы такого размера загружаются практически мгновенно.

Специально сейчас протестировал.
Файл размером 13,5МБ загружается в string за 0.8-0.9 секунд.

Добавлено через 1 минуту
Цитата Сообщение от ShmelVG Посмотреть сообщение
Надеюсь скоро восстановите акк и всё будет хорошо
Тоже надеюсь.
Но от администрации - тишина.
Ни на один пост, письмо не ответили.

Добавлено через 4 минуты
Цитата Сообщение от ShmelVG Посмотреть сообщение
в WF было так и всё работало
WF и WPF по разному работаю с потоками.
Похоже, близко, но по разному.

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
38
39
40
41
42
43
44
45
private void DateButton_Click(object sender, EventArgs e)
        {
            string path = (sender as Button)?.Tag?.ToString();
 
            try
            {
//                Task.Run(() =>
//                {
//                    loadFileProgressBar.BeginInvoke(new Action(() =>
//                    {
                        loadFileProgressBar.Value = 100;
                        loadFileProgressBar.Style = ProgressBarStyle.Marquee;
//                    }));
//                });
 
                string text = "";
 
                Task.Run(() =>
                {   
                    text = File.ReadAllText(path);
 
   //                 viewLogTextBox.BeginInvoke(new Action(() =>
   //                 {
   //                     viewLogTextBox.Text = text;
   //                     viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
   //                     viewLogTextBox.ScrollToCaret();
   //                 }));
                });
                  viewLogTextBox.Text = text;
                  viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
                  viewLogTextBox.ScrollToCaret();
            }
            catch { }
        }
 
        private void viewLogTextBox_TextChanged(object sender, EventArgs e)
        {
//            Task.Run(() =>
//            {
//                loadFileProgressBar.BeginInvoke(new Action(() =>
//                {
                    loadFileProgressBar.Style = ProgressBarStyle.Blocks;
//                }));
//            });
        }
Добавлено через 2 минуты
Я писал вам за точку останова и проверку значений.
Проверили?
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
19.09.2019, 10:54  [ТС]
ЭлдХасп, как можно решить мою задачу? мне всего лишь надо дать пользователю знать что что-то происходит во время загрузки файла, а не упало приложение)
0
Заблокирован
19.09.2019, 10:57
Цитата Сообщение от ShmelVG Посмотреть сообщение
как можно решить мою задачу? мне всего лишь надо дать пользователю знать что что-то происходит во время загрузки файла, а не упало приложение)
Я не знаю точного решения.
Для этого надо запускать ваше решение с вашими данными.
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
19.09.2019, 11:09  [ТС]
Жаль( ...Я понял что IsIndeterminate = true; и false нельзя запускать в одном методе, возможно прижется сделать событие, чтобы дать понять что файл загрузился и вызвать false

Добавлено через 9 минут
ЭлдХасп, а, долго потому что linq)
0
Заблокирован
19.09.2019, 11:13
Цитата Сообщение от ShmelVG Посмотреть сообщение
а, долго потому что linq)
У вас же в коде нет LINQ!
Или вы разные коды используете и показываете здесь?
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
19.09.2019, 11:17  [ТС]
ЭлдХасп, Да, к сожалению я не могу скинуть весь код(
0
Заблокирован
19.09.2019, 11:23
Цитата Сообщение от ShmelVG Посмотреть сообщение
к сожалению я не могу скинуть весь код
Скорее всего вы где-то неправильно используете LINQ.
Чаще всего методы LINQ возвращают IEnumerable<T> и исполняются мгновенно.
0
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
19.09.2019, 11:37
ShmelVG, как я понял запускаете задачу и она должна сообщать ход выполнения, да? Некий callback
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
19.09.2019, 11:44  [ТС]
ЭлдХасп, не могу понять в методе
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private async void DateButton_Click(object sender, EventArgs e)
        {
            string path = (sender as Button)?.Tag?.ToString();
 
            loadFileProgressBar.IsIndeterminate = true;
 
            try
            {
                string text = "";
 
                await Task.Run(() =>
                {
                    text = File.ReadAllText(path);
                });
 
                viewLogTextBox.Text = text;
                viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
                scrollViewerTextBox.ScrollToBottom();
            }
            catch { }
        }
при отладке
C#
1
loadFileProgressBar.IsIndeterminate = true;
начинает работать только когда выходит из метода, есть ли события которые отрабатывает клик до и после нажатия кнопки?

Добавлено через 20 секунд
Defences, как вариант)
0
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
19.09.2019, 11:47
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            Progress<int> callbackMax = new Progress<int>(i => { pbStatus.Maximum = i; });
 
            Progress<int> callbackNow = new Progress<int>(i => { pbStatus.Value = i; });
 
            await Method(callbackMax, callbackNow);
        }
 
 
        private async Task Method(IProgress<int> callbackMax, IProgress<int> callbackNow)
        {
            callbackMax.Report(100);
            for (int i = 0; i < 101; i++)
            {
                callbackNow.Report(i);
                await Task.Delay(100);
            }
         
        }
1
Заблокирован
19.09.2019, 11:59
Цитата Сообщение от ShmelVG Посмотреть сообщение
понял что IsIndeterminate = true; и false нельзя запускать в одном методе
Это не так!

Запустите простой тестовый пример. Всё работает как надо.
XML
1
2
3
4
5
    <Grid Background="AliceBlue">
        <ProgressBar x:Name="pb" Height="50" VerticalAlignment="Top"></ProgressBar>
        <Button VerticalAlignment="Center" HorizontalAlignment="Center"
                Content="Запустить на 5 секунд" Click="Button_Click"/>
    </Grid>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public partial class MainWindow : Window
    {
        public MainWindow() => InitializeComponent();
 
        private void Button_Click(object sender, RoutedEventArgs e)
            => ProgressBarWorkAsync();
 
        private async void ProgressBarWorkAsync()
        {
            pb.IsIndeterminate = true;
            await Task.Run(()=>Thread.Sleep(5000));
            pb.IsIndeterminate = false;
 
        }
    }
Добавлено через 6 минут
Цитата Сообщение от ShmelVG Посмотреть сообщение
не могу понять в методе
Я же вам дал как надо переписать ваши метод

Сделайте так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void DateButton_Click(object sender, EventArgs e)
            => LoadFileAsync((sender as Button)?.Tag?.ToString());
 
        private async void LoadFileAsync(string path)
        {
 
            loadFileProgressBar.IsIndeterminate = true;
                string text = "";
 
            try
            {
 
                await Task.Run(() =>{text = File.ReadAllText(path);});
 
            }
            catch { }
            viewLogTextBox.Text = text;
            viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
            scrollViewerTextBox.ScrollToBottom();
            loadFileProgressBar.IsIndeterminate = false;
        }
0
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
19.09.2019, 12:03
А если переписать ваш код, то вот так, ибо смысл юзать дистпатчер в задаче, если можно вернуть результат из задачи
C#
1
2
3
4
5
6
7
8
9
10
11
12
private async void DateButton_Click(object sender, EventArgs e)
        {
            pbStatus.IsIndeterminate = true;
            string path = (sender as Button)?.Tag?.ToString();
 
             string text = await Task.Run(() => File.ReadAllText(path));
 
            viewLogTextBox.Text = text;
            viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
            scrollViewerTextBox.ScrollToBottom();
            pbStatus.IsIndeterminate = false;
        }
А ошибка у вас возможно в неправильном патче. Тут string path = (sender as Button)?.Tag?.ToString();

Добавлено через 3 минуты
Ну а чтобы наверника избавиться от ошибки, то делать проверку на путь
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 private async void DateButton_Click(object sender, EventArgs e)
        {
            var btn = (Button) sender;
            if (btn?.Tag == null) return;
            pbStatus.IsIndeterminate = true;
            string path = btn.ToString();
 
            string text = await Task.Run(() => File.ReadAllText(path));
 
            viewLogTextBox.Text = text;
            viewLogTextBox.SelectionStart = viewLogTextBox.Text.Length;
            scrollViewerTextBox.ScrollToBottom();
            pbStatus.IsIndeterminate = false;
 
        }
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
19.09.2019, 12:04  [ТС]
ЭлдХасп, я попробовал в новом проекте, действительно так работает...Я ошибался.
На счет последнего варианта результат тот же, он запускается но не останавливается (
0
Заблокирован
19.09.2019, 12:05
Цитата Сообщение от ShmelVG Посмотреть сообщение
не могу понять в методе
Может у вас ошибка возникает?
И из-за блока try-catch вы её не замечаете?
В блок catch введите какою-нибудь индикацию.
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
19.09.2019, 12:05  [ТС]
Defences, это гениальное решение, я думаю что это мне подойдет, но я только пока не разобрался как он работает, просто при клике прогрессбар запускается не сразу, а через какое-то время, надо по экспериментировать и запомнить)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2019, 12:05
Помогаю со студенческими работами здесь

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

Работа с ProgressBar и циклом
День добрый уважаемые товарищи, хочу реализовать систему накопления опыта для уровня, и мне нужно: У меня есть переменная exp на...

Одновременная работа двух ProgressBar'ов.
Всем добрый день! Никак не могу найти решение задачи или хотя бы подсказку. В общем есть ProgressBar1, который запускается кнопкой...

Совместная работа ProgressBar и BackgroundWorker
Долгое время уже мучаюсь с этим прогресс баром, который связан с backgroundWorker'oм. Пробовал разные варианты, как это сделать, но......

Работа ProgressBar в отдельном потоке
Привет. Подскажите, как заполнять и обновлять progressBar в отдельном потоке в процессе вычислений? У меня вычисления происходят в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru