Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122

Скорость прорисовки TBitmap в C++ Builder

24.05.2010, 11:01. Показов 1872. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у меня объект TBitmap, и TImage, на котором нужно прорисовать этот TBitmap после некоторых преобразований.

Делаю это так:

C++
1
2
3
Image->Canvas->Brush->Color = cl3DDkShadow;
Image->Canvas->FillRect(BitMap->Canvas->ClipRect);
Image->Canvas->Draw(0,0,BitMap);
Вопрос: Есть ли альтернатива?
Дело в том, что мне нужно в реальном времени пересчитывать яркость/контрастность и тут же перерисовывать.
Такой способ дает очень медленную прорисовку, поскольку размер изображения довольно существенный (Ширина - 2080, Высота - 2560)

Какие варианты? Подскажите хотя бы в какую сторону копать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2010, 11:01
Ответы с готовыми решениями:

Эффективная работа с Bitmap, адекватная скорость прорисовки
Здравствуйте, товарищи программисты! Возник у меня вопрос относительно работы с графикой в Lazarus. (использую Lazarus IDE v1.0.4) ...

Как увеличить скорость прорисовки массива вершин?
Имеется пара вертексных массивов, применяю простой код для прорисовки: ......... float vertexArrayValues = new float; float...

Tbitmap.create и Tbitmap.scanline
Если после создания bitmap-а загрузить изображение (loadfromfile()) то изменение пикселей через scanline работает правильно, но если bitmap...

5
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
24.05.2010, 12:28
а зачем FillRect?

другой вариант
C++
1
2
BitBlt (Image->Canvas->Handle, 0, 0, Image->Width, Image->Height,
         BitMap->Canvas->Handle, 0, 0, SRCCOPY);
0
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
24.05.2010, 15:35  [ТС]
Цитата Сообщение от Roma_F Посмотреть сообщение
а зачем FillRect?

другой вариант
C++
1
2
BitBlt (Image->Canvas->Handle, 0, 0, Image->Width, Image->Height,
         BitMap->Canvas->Handle, 0, 0, SRCCOPY);
Это уже пробовал - не помогло. Скорость никак не прибавило...
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
24.05.2010, 16:02
а зачем выводить всю картинку, может только видимую часть

и всё таки зачем FillRect?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
26.05.2010, 00:30
Цитата Сообщение от davian Посмотреть сообщение
Такой способ дает очень медленную прорисовку, поскольку размер изображения довольно существенный (Ширина - 2080, Высота - 2560)
А вы уверены, что вам необходимо сразу перерисовать такую огромную область? Она у вас даже в зону видимости не впишется.

Если вы пишете что-то подобное редактору, то советую поступить по-другому. Сделайте отдельную форму, на которую поместите тамбнэил изображения... То есть, изображение, но с гораздо меньшем количеством пикселей. Его и изменяйте. Для создания минимизированного изображения вам подойдёт функция StretchBlt.

Почитать о данной функции можно здесь: http://www.vsokovikov.narod.ru... tchblt.htm
1
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
26.05.2010, 08:44  [ТС]
Цитата Сообщение от MiCr0s0fT Посмотреть сообщение
А вы уверены, что вам необходимо сразу перерисовать такую огромную область? Она у вас даже в зону видимости не впишется.

Если вы пишете что-то подобное редактору, то советую поступить по-другому. Сделайте отдельную форму, на которую поместите тамбнэил изображения... То есть, изображение, но с гораздо меньшем количеством пикселей. Его и изменяйте. Для создания минимизированного изображения вам подойдёт функция StretchBlt.

Почитать о данной функции можно здесь: http://www.vsokovikov.narod.ru... tchblt.htm
Спасибо за такой совет. Я как раз искал варианты сделать так - изменять яркость/контрастность у уменьшенной копии, а все остальные операции уже делать с вычисленными значениями яркости/контрастности...

... а пишу я программу для обработки рентгеновского изображения. Там необходимо не допускать никаких потерь в качестве изображения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2010, 08:44
Помогаю со студенческими работами здесь

Порядок прорисовки
Есть объект , состоящий из quads , проблема в том, что квады прорисовываться сразу и так получается , что внешние не видят внутренние , и...

TBitMap
Делаю консольное приложение program Project; {$APPTYPE CONSOLE} uses SysUtils, Jpeg, Registry, Graphics, Windows,...

TBitMap
Как можно двигать по форме объект TBitMap? я хотел по циклу или по таймеру передвигать его горизонтально с помощью Left. Но у него...

Класс прорисовки трапеций
здравствуйте! помогите, пожалуйста, создать класс закрашенных трапеций, так чтобы потом можно было нарисовать несколько экземпляров этого...

Игнорируется код прорисовки
Не срабатывает следующий код контрола: namespace WindowsFormsApplication11 { public class NumericTextBox : RichTextBox { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
моя боль
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/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru