|
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 41
|
||||||
Очень медленной прорисование картинки. Как ускорить?31.07.2012, 21:23. Показов 2498. Ответов 9
Метки нет (Все метки)
Требуется вывести матрицу в графическом варианте. Т.е. заполнить картинку точками различной яркости/призрачности (не так важно) в зависимости от значений матрицы.
Попробовал при помощи битмапа и сетпикселя. Но оочень медленно. Подскажите, правильно ли вообще я делаю, как можно ускорить выполнение подобной операции. Логично ли для этого переходить к использованию специальных библиотек для графики (директ икс??), с которыми я ранее и не пытался работать. К тому же, мне можно выводить прозрачность с градацией меньшей, чем 256, но как это сделать, я не понял.
0
|
||||||
| 31.07.2012, 21:23 | |
|
Ответы с готовыми решениями:
9
Очень медленно скачивает страницу (TIdHTTP). Как ускорить? Добавляю из ресурсов картинки. Их много. Как ускорить процесс?
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
| 01.08.2012, 02:11 | ||||||
|
hamster28, напишите что представляет из себя matrix ?
что записано в matrix ? И что это за формула ?
GetBrightness() - зная цвет получим яркость .
0
|
||||||
|
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 41
|
||||||
| 01.08.2012, 09:29 [ТС] | ||||||
|
1 - matrix - матрица даблов размерностью примерно 4000*70
2 - фактически это (элемент матрицы - минимум)/(максимум-минимум) - отношение от нуля до единицы, которое домножаем на 255 и округляем, чтоб было значение яркости или прозрачности точки 3 - GetBrightness() - это яркость пикселя, если я правильно понял. уже существующего. а мне нужно просто из обычной числовой матрицы придумать зависимость расставления яркостей по полю картинки. Добавлено через 1 час 37 минут Вот, переписал для понятности. Сейчас matrix это массив целочисленных элементов со значениями от 0 до 255. При размерах picturebox1 приблизительно 400 на 300 пикселов время вывода на экран около полутора минут. Хотелось бы ускорить выполнение операции.
0
|
||||||
|
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,560
|
|
| 01.08.2012, 11:01 | |
|
hamster28, GetPixel,Set/PutPixel - самый медленный вариант работы с графикой, надо непосредственно работать с памятью, помогает ассемблер
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 41
|
|
| 01.08.2012, 13:19 [ТС] | |
|
MansMI, спасибо за идею, а можешь привести пример.
И какие есть еще варианты работы с графикой кроме Pixel и ассемблера?
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||
| 01.08.2012, 23:06 | ||||||
|
hamster28, вот хороший пример http://msdn.microsoft.com/ru-r... 6(v=vs.90)
Переделал этот пример. Вам остается исправить код под свой массив Коротко опишу решение: Создаем массив по размеру pictureBox-а и заполняем значениями 0 - 255. Этот массив для прозрачности . Дальше используя массив создаем черно - белое изображение из точек ( прямоугольников размером в 1 пиксел ) Задаем цвет кажд. точке ( черн.цвет и прозрачность ). По нажатию кнопки - происходит отрисовка ( очень быстро )
1
|
||||||
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
||||||||||||||||||||||
| 03.08.2012, 06:28 | ||||||||||||||||||||||
|
.....................
Добавлено через 8 минут небольшие неточности cтр. 15
У вас hamster28 массив уже есть
0
|
||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 41
|
|
| 03.08.2012, 19:35 [ТС] | |
|
MrCold
да, да. сообразил. большое спасибо. выводится быстро. еще вопрос, на будущее - как быстрее всего перерисовывать эту матрицу, если в ней будет меняться 1 столбец каждые n времени. Перерисовать полностью? или есть варианты с перерисовкой 1 столбца, 1 сектора картинки?
0
|
|
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||||
| 04.08.2012, 15:41 | |||||||||||||
|
Добавлено через 17 минут
Тем более лепим изображение из отдельных пикселей . Проверим . Добавим второй битмап ( размер 1/4 первого) и измерим скорость для каждого Результат выведем в MessageBox
рисовать новый сектор поверх старого , Но здесь используется прозрачность. Поэтому сектор придется затирать цветом фона. Быстрая затирка, а вывод картинки медленный . Результат получаем - пустой участок. Как перерисовать а потом затереть, потом опять перерисовать, да так что не наблюдать пустого участка ? ??????? Тут затрудняюсь с ответом . Если не использовать прозрачность то проблемы нет - Достаточно рисовать новый сектор на месте старого . Формируем цвет не используя прозрачность
Получаем черно-белое изображение . Дальше нам нужно один раз вывести основное изображение на PictureBox поверх картинки . ( Проверил через таймер - все замечательно выводится , смена едва заметна ) .
1
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 41
|
|
| 05.08.2012, 02:42 [ТС] | |
|
Огромное спасибо за полный ответ. Очень помог.
Если еще возникнут вопросы - буду писать, а пока все ясно, еще раз спасибо
0
|
|
| 05.08.2012, 02:42 | |
|
Помогаю со студенческими работами здесь
10
Смена Картинки(очень нужно) Взаимодействие МК с "медленной" периферией В чём причина медленной работы компьютера? Найти причину медленной работы скрипта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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
/ *
Дана цепь постоянного тока с 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 из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|