Отображение графики в реальном времени (.net 2.0) - PullRequest
0 голосов
/ 03 октября 2010

Это озадачивает меня годами, начиная с MFC. Мы все знаем ограничения DC в Windows, и я действительно хочу освободиться от этого на этот раз.

Что мне нужно, так это уметь рисовать с некоторой скоростью, то есть контролировать, в любое время - из любого потока, даже используя прямую битовую манипуляцию! Есть ли кто-нибудь, кто может пролить свет на это.

Я предпочитаю, чтобы этот вопрос оставался свободным от WPF. Мне нравится GDI, и я хотел бы остаться в его объятиях.

1 Ответ

2 голосов
/ 03 октября 2010

рисовать с некоторой скоростью, т. Е. В любое время - из любого потока

Этого не произойдет в Windows. Основные элементы управления Windows разработаны с учетом схожести потоков. Вы должны использовать поток, который создал элемент управления для рисования в элементе управления (даже с WPF). GDI (и GDI +) основаны на этих технологиях и всегда требуют использования одного потока рендеринга.

При этом вы все равно можете делать графику в реальном времени. Просто обработайте всю обработку в графических потоках и только перетащите рисунок в поток пользовательского интерфейса. Это будет достаточно быстро, чтобы нарисовать почти все необходимое.

Если требуется абсолютная скорость рендеринга, вы можете переключиться на Direct2D или Direct3D для рендеринга. В Direct3D есть опции для многопоточного рендеринга, хотя внутри все еще используется блокировка.

Тем не менее, вы должны иметь возможность рендеринга с гораздо большей, чем частота обновления вашего монитора, используя D3D.

...