Здравствуйте, программисты!!!
Интересная штука прояснилась, читаю функцией GetMetaFile WMF-файл и функцией PlayMetaFile вывожу на HBITMAP hBmp (Монохромный, размером 5000х5000, режим MM_ISOTROPIC) ч/з HDC hDCMem, при этом при отладки посмотрел, большую част времени занимает вывод, т.е. ф-я PlayMetaFile.
Мне постоянно необходимо считывать в оперативку по три WMF-файла (при открытии заказа),и в общей сложности на то чтобы поместить файл в память у меня уходит 15 сек.
У меня на сложившуюся ситуацию приходит только одно решение писать собственный декодер WMF файлов и выполнять комманды записанные в фаилах сразу на HBITMAP`е.
Может есть дугой вариант расвити событий в сложившейся ситуации, подскажите как быть.
-----------
Заранее спасибо за помощь.
Здравствуйте, Alexoid1, Вы писали:
A>Здравствуйте, программисты!!! A>Интересная штука прояснилась, читаю функцией GetMetaFile WMF-файл и функцией PlayMetaFile вывожу на HBITMAP hBmp (Монохромный, размером 5000х5000, режим MM_ISOTROPIC) ч/з HDC hDCMem, при этом при отладки посмотрел, большую част времени занимает вывод, т.е. ф-я PlayMetaFile.
Битмап большой и, насколько я понимаю, не-compatible. Вывод в DC производится программно, без аппаратного ускорения. Скорее всего, это и есть причина тормозов.
A>Мне постоянно необходимо считывать в оперативку по три WMF-файла (при открытии заказа),и в общей сложности на то чтобы поместить файл в память у меня уходит 15 сек. A>У меня на сложившуюся ситуацию приходит только одно решение писать собственный декодер WMF файлов и выполнять комманды записанные в фаилах сразу на HBITMAP`е. A>Может есть дугой вариант расвити событий в сложившейся ситуации, подскажите как быть.
Надо понять задачу. Может, потребуется что-то придумывать, эксперименты. Если битмап 1-битный, то даже не знаю, какой библиотекой его можно рендерить _очень_быстро_.
A>----------- A>Заранее спасибо за помощь.
Здравствуйте, goto, Вы писали:
G>Надо понять задачу. Может, потребуется что-то придумывать, эксперименты. Если битмап 1-битный, то даже не знаю, какой библиотекой его можно рендерить _очень_быстро_.
Задача простая — создать предварительный просмотр заказа с участием WMF-файлов, и плюс к этому некоторую информацию вывести из Базы данных.
В итоге я поэксперементировал на разных машинах в том числе и на одноядерном celerone и окозалось что он намного быстрее справляется с этой задачей (3 WMF-файла за пару сек.) и я рещил с многоядерными процами решить задачю многопоточностью, конечно не всё так безоблачно, но хотя-бы оператор пока загружаются 2-е остальных картинки — просмотреть первую.
Если моя программа внедрится в производство я напишу на чтение WMF-чтение формата собственный декодер, темпаче в инэте есть инфа как этот формат устроен, надеюсь это ускорит чтение и вывод на растр в памяти этой БАЙДЫ, а так пока я и этим что получилось доволен.