| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Как ускорить процесс зарисовки SetPixel |
| Автор: ashtone 18.9.2015, 19:35 | ||
| Суть проблемы вот в чем. Имею двухмерную матрицу чисел 512х512, числа в матрице в пределах от 800 и до 2500. Далее приравняв максимальное число к белому цвету а минимальное к черному, остальные рассчитываю относительно первых, надо вывести эту матрицу на экран, путем зарисовки пикселей (512х512) соответствующим цветом (от белого к черному). В итоге получится некая серая рябь. Но проблема в том, что зарисовка происходит уж очень медленно, видно как кадр построчно рисуется. Как ускорить данный процесс?? или хотя бы как сделать так, что бы не было видно самого процесса зарисовки, а записать массив цветов каждого пикселя и сразу все вывести разом. Вот сама функция вывода на экран изображения (переменные min и max глобальные и рассчитываются в другой функции, рисую на Picture Control, к которой привязана переменная m_paint:
Я так понял надо копать в сторону SetDIBits и BitBlt, но пока не могу понять как реализовать используя эти функции (Использую Visual Studio 2010 MFC) |
| Автор: ashtone 18.9.2015, 23:23 | ||
| Все решил проблему. решил подобным образом:
Все рисуется достаточно быстро и незаметно. Но возникла некая проблемка. Как задать размер пикселя, при прорисовки изображения?? так как рисунок не влазит в отведенную область, да и придется еще работать с более крупными изображениями... вот что бы их масштабировать надо указать размер рисуемого пикселя.. только вот где..[code=cpp] |
| Автор: Pavlovich 19.9.2015, 11:56 | ||
Функция StretchBlt поможет. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Kak-uskorit-protsess-zarisovki-SetPixel-id55fc3d72ae2015837e8b4567#findElement_E7045_55fd2332ae201568167f5fb8_0 |