Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите решить конкретную задачу связанную с шаблонами https://www.cyberforum.ru/ cpp/ thread362718.html
Такая задача: есть три класса, один простой, другой шаблонный, а третий - интерфейсный. Простой класс и шаблонный - наследуются от интерфейса, и получают его в своё распоряжение. Но простой класс...
Связать Matlab и visual studio 2010 C++
Необходимо подключить библиотеки matlab к visual studio в c++. Проблема в том что я даже описания найти не могу в каких библиотеках матлаба какие функции находятся. Может кто-нибудь помочь?
Help Me Gps Navigator C++
Помогите с прогой GPS NAVIGATOR хотябы сделать 1 маршрут от а до б.... все советы учту есть сpp код ..... #include <iostream> #include <iomanip> #include <queue> #include <string> #include...
C++ Помогите разобраться с шаблонами Пытаюсь реализовать новую для себя методику "службы класса". Все хорошо работало, пока не возникла необходимость в качестве клиента слжбы задействовать не обычный класс, а класс-шаблон. Впрочем,... https://www.cyberforum.ru/ cpp/ thread361182.html
C++ как раскрасить стаистический рисунок? https://www.cyberforum.ru/ cpp/ thread361148.html
#include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> void Box(int x1, int y1, int x2, int y2); int main(void) { int xmax, ymax;
диспечер задач C++
пожалуйста скиньте диспечер задач на с++ или на с# у кого есть, а то вообще времени ни на что не хватает, чтоб еще его делать.
Требуется помощь!Робот-фермер.. C++
Доброго времени суток!Требуется помощь ,я только начинаю учить си ++,поэтому прошу проявить терпение в случае чего:). Значит задача такова: Робот фермер различает размер апельсинов (...
C++ Разработка для Windows CE Доброго времени суток! Подскажите пожалуйста, что используется для разработки ПО для Windows CE 6 и выше? Слышал, что VS 2008 содержит что-то вроде эмулятора. Есть ли более ранние версии VS, которые... https://www.cyberforum.ru/ cpp/ thread356620.html
C++ Странная ошибка при сборке nasm https://www.cyberforum.ru/ cpp/ thread356140.html
всем привет. нужно собрать nasm для вендус. использую MSYS+MinGW. configure прошел успешно. при сборке получаю такое: nasm.h:476:5: error: expected identifier before numeric constant...
C++ Прослушать запись в файл Доброе утро! Стоит задача записи некоторых атрибутов в CAD файл (UG) без ее запуска. Если изменять текущие атрибуты в файле без добавления или исключения символов, то файл запускается нормально. но... https://www.cyberforum.ru/ cpp/ thread355686.html
3 / 3 / 1
Регистрация: 21.01.2011
Сообщений: 27
0

Быстрая прорисовка виртуального окна в реальном времени

09.10.2011, 22:11. Просмотров 1228. Ответов 2
Метки (Все метки)

Описание задачи: Есть приложение работающее в реальном времени и требующее обновление области экрана "попиксельно" со скоростью не хуже чем 24 раза в секунду.

Область экрана имеет размеры 1024 *300.

Работа идет след образом: Сначала изображение рисуется попиксельно в виртуальном окне а затем с помощью BilBlt выводится на форму.

Как рисуется изображение в виртуальном окне:
C++
1
2
3
for(int i=0;i<n;i++)
 for(int j=0;j<m;j++)
   ::SetPixel(Bm,i,j,RGB(a[i][j],0,0));
Как изображение выводится:


BitBlt(hdscreen,0,0,1024,300,Bm_hdc,0,0,SRCCOPY);




Все выводится нормально, НО возникает проблема больших тормозов.
Видимо,что если с помощью ::SetPixel(Bm,i,j,RGB(a[i][j],0,0)); пробегать 24 раза в секунду весь массив
1024*300 ,то это будет тяжеловато.

Вопрос заключается в том, как можно быстро прорисовать все пиксели в виртуальном окне?

Можно ли как-то получить напрямую доступ к массиву пикселей в виртуальном окне, например используя ScanLine ил подобное ей?

Добавлено через 16 минут
Ах да еще забыл сказать что такое Bm и Bm_hdc

C++
1
2
3
4
5
6
HDC Bm,Bm_hdc,hdscreen;
 
 
hdscreen=GetDC(Form1->Handle)
Bm=CreatCompatibleBitmap(hdscreen,1024,300);
Bm_hdc=CreatCompatibleDC(hdscreen);
Добавлено через 7 часов 14 минут
UPDATE

Решил выводить изображение в форме Bitmap на с помощью Canvas->Draw:

1)Сначала изображение записывается в Bitmap с помощью ScanLine.
2)Затем этот Bitmap выводится на форму с помощью Canvas->Draw:


Но проблему это все же не решило,точнее решало на 20% .
Тормоза ушли, но все равно процедура перерисовки ест много ресурсов(процессор загружен моим приложением на 30%).На слабом компе начинает подтормаживать

При этом установлено,что сама процедура Canvas->Draw почти не есть системные ресурсы(около
1-2%).

Большую часть ресурсов съедает сам процесс перезаписи Bitmap через ScanLine

Необходимо найти более быстрый способ доступа.

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

Вернуться к обсуждению:
Быстрая прорисовка виртуального окна в реальном времени
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2011, 22:11
Готовые ответы и решения:

Отобразить на экране информацию о загрузке ЦП компьютера в реальном времени
Добрый день ! Помогите пожалуйста с кодом на с++. Привести исходный код программы, отображающей на...

COM порт в реальном времени
Возникла проблема при работе микроконтроллера с РС в реальном времени. Задача заключается в том...

Вывод графика в реальном времени
Всем привет, есть проблемка, не могу никак разобраться. Есть открытый сервер сокет, который...

Отрисовка графика в реальном времени
Необходимо отрисовывать график в процессе работы программы. Т.е. например, y=x на интервале ,...

2
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.