| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Быстрейшее .. |
| Автор: ShuVaS 24.1.2005, 21:13 |
| Короче в моей проге есть фоновый рисунок мне нада чтобы этот рисунок выводился как можно скорее и тратил как можно мньше памяти и не тормозил систему.И еще я юзаю Xp манифест (Delphi 7) Проблемки - у меня то фон пропадает то еще че нить .... (нада мне єтот манифест таскать или просто на форму кинуть ?).И последнее - при изменении размеров формы у меня остаютьсянеприятные еффекты от старого рисунка -- как обновить форму ... |
| Автор: s-mike 24.1.2005, 22:25 | ||||||||
Добавлено @ 22:27
Быстрее BitBlt при использовании GDI (стандартных виндовых окошек) еще не придумали. Добавлено @ 22:29
Без разницы. Только в Win9x-2000 размер файла будет больше на несколько Кб ненужного кода, если использовать компонент. |
| Автор: ShuVaS 25.1.2005, 00:20 | ||
А по подробней на счет вывода графики можно ?Стоит ли юзать Image ?Мне нада чтобі еще желательно можно біло изображение натянуть(если не использовать Image -говорят медленно)И Еще мож не по теме токо из-за этого создавать топик не охота - Application.ProcessMEssages - его один раз в процедуре надо ставить:
или после каждогособытия?Если один раз - то где (в самом конце или в начале).... |
| Автор: p0s0l 25.1.2005, 00:27 | ||||
Но нужно заметить, что но не стоит бросать VCL и переходить на WinAPI/GDI, и не стоит замудрять голову смешиванием VCL и WinAPI, т.к. VCL всё равно в итоге работает через эти же функции. "Надстройка" сжирает очень-очень мало. Даже если в цикле тысячи раз вызвать BitBlt и сравнить с Canvas.Draw, то разница будет настолько малозначительной, что принимать во внимание её не имеет смысла. Более важную роль при копировании изображения играет формат пикселя. Неправильный выбор формата может привести к замедлению в десятки раз (!). Правильным же подходом является хранение изображения в памяти в формате, идентичном формату контекста, куда будет выводится картинка. Иначе при каждом копировании будет происходить преобразование исходного изображения к нужному формату, поэтому если нужно выводить картинку часто, то лучше сразу привести её к нужному виду... Это делается довольно легко. Например, если картинку выводишь на экран, то нужно делать так:
Это как минимум ускорит вывод битмапа на экран раза в 2-3... |
| Автор: ShuVaS 25.1.2005, 15:04 |
| а как мне напримар вывести ???через Canvas.Draw или через что ???? и на счет Application.ProcessMessages - я спрашую вообще как надо ставить -один раз или несколько в процедуре ? |
| Автор: p0s0l 25.1.2005, 18:30 | ||
|
| Автор: ShuVaS 25.1.2005, 19:26 |
| г-н Посол вы не множко не поняли ...Я попросил обьснить как работает Application.ProcessMasseges - что бы он работал его нада ставить после ресурсоемкой строчки до нее или вообще один раз в начале (или в конце)... Насчет рисунка - подскажите наибыстрейший и удобный формат *.bmp или *.jpg .. (учитывая что второй можно сжать легко до 30-40 kb)..И как наконец вывести ето изображение ....(желательно полный код - а то я не понимаю чуток (естественно что это было как можно быстрее и оптимизированнее)... И как обновить окно формы ???(если я хочу просто нажать на кнопку...) P.s - Вот вроде и все |
| Автор: ДЫМ 27.1.2005, 02:43 | ||||||
Насколько я понял, ты хочешь, чтобы во время загрузки большого файла контролы реагировали на твои действия. Так вот, ProcessMasseges не поможет, придется сидеть и смотреть на "песочные часы"
Если у тебя большой рисунок, то вывод *.jpg займет заметно больше времени (я проверял). Так, что если так важна скорость, то используй формат *.bmp А так можно заполнить фон
|