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

Рисование на форме из нескольких потоков с двойной буферизацией, возможно ли?

07.04.2015, 09:31. Показов 1909. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Учебное задание, несколько потоков, каждый считает траекторию своей геом. фигуры и рисует ее на форме. Никак не могу сообразить, как вывести их на форму без мерцания. Если бы рисование производилось в одном потоке, то все делается элементарно. Может кто сталкивался, подскажет?

Добавлено через 22 минуты
Если рисовать в одном потоке то получается просто (типа псевдокод):
StartDraw() //очищаем и устанавливаем активным буфер
//Рисуем
Circle()
Line()
SwapBuffers()// делаем активный видимым, а видимый активным
Но это все в одном потоке...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2015, 09:31
Ответы с готовыми решениями:

Нужна помощь! Надо разобраться с двойной буферизацией!
Уважаемые господа программисты! Прошу помочь разобраться мне с моей проблемой: Ситуация такова, есть окно в котором рисуется...

Отобразить ход нескольких потоков в нескольких ProgressBar
Возник вопрос как прикрепить ProgressBar к потокам, к примеру 100 потоков, нужно, чтобы ProgressBar правильно изменялся. Заранее спасибо

Рисование графика с использованием двойной буферизации
Добрый день. Делаю программу, которая будет в себе содержать динамический график. Не знаю, как применить двойную буферизацию. Каждый...

1
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
07.04.2015, 14:44
Лучший ответ Сообщение было отмечено ikari81 как решение

Решение

Вам может помочь включение оптимизированного двойного буфера отдельно для контрола, на котором рисуете, а не для всей формы.
Для этого необходимо создать свой контрол:
C#
1
2
3
4
5
6
7
8
9
10
11
public class MyPanel : System.Windows.Forms.Panel
    {
        public MyPanel()
        {
            this.SetStyle(
                System.Windows.Forms.ControlStyles.UserPaint | 
                System.Windows.Forms.ControlStyles.AllPaintingInWmPaint | 
                System.Windows.Forms.ControlStyles.OptimizedDoubleBuffer, 
                true);
        }
    }
добавить его на форму и рисовать на нём.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.04.2015, 14:44
Помогаю со студенческими работами здесь

Печать и рисование, как уйти от двойной работы?
Здравствуйте! рисую на форме некоторые объекты (фигуры), линиями и потом эти же самые объекты вывожу на печать, вопрос в том как мне уйти...

Возможно ли ограничить запуск потоков
Добрый день. Подскажите, есть несколько потоков MyThread, которые запускаются горячей кнопкой, останавливаются другой. Как сделать чтобы...

Возможно ли создать массив потоков
А возможно ли создать массив потоков, или лист потоков. Типа: List<Thread> threads = new List<Thread>(SomeMethod); Ну и...

Изменяемая подтаблица в разделённой форме при условии наличия в этой форме нескольких внедрённых объектов
Здравствуйте! Помогите пожалуйста, как разобраться... В форме есть несколько внедрённых форм, но нужно, чтобы при нажатии на эти...

Создание нескольких потоков
как сделать что было много потоков, я не совсем понимаю как это?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru