Форум: "WinAPI";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизКак создать и заполнить EMF? Найти похожие ветки
← →
mari_ra (2002-05-15 10:44) [0]Помогите, пожалуйста: нужно создать EMF и запихнуть в него кусок из другого EMF. Разобрать входящий EMF с помощью EnumEnhMetaFile я могу, проанализировать, какие функции из него мне нужны, а какие нет, тоже. А вот как из отобранных функций составить новый EMF... Help, pls!!!
← →
valery_f (2002-05-15 12:18) [1]Я думаю - так и составить, по порядку. Единственная проблема - не запутаться с управляющими командами (типа масштабирования window/viewport, параметры заливки и т.д. и т.п.), а возни тут, наверное, будет много (это, конечно, если делать "честно" :).
Но если речь идет просто о выборке из существующего EMF (без добавления), то проще выкинуть из исходного файла лишние команды отрисовки (но только отрисовки (!), заменив их на MoveTo в конец выкинутого объекта, если пакет команд модифицирует положение пера).
← →
mari_ra (2002-05-15 13:40) [2]Sorry, все-таки не поняла...
Создаю новый метафайл
var cuthdc: HEnhMetaFile;
begin
cuthdc:=CreateEnhMetafile(0, PChar("hBuff.emf"), nil, "");
...
Загружаю исходный метафайл, разбираю по функциям (EnumEnhMetaFile). В том, что правильно определяю, какие функции нужны, какие - нет - уверена, поскольку могу все это дело отрисовать на панели. Но какая фунцкия добавляет эти функции в новый метафайл?
← →
valery_f (2002-05-15 14:17) [3]Есть 2 варианта:
1) Для нового метафайла "исполнить" нужные команды, вызывая соответствующие им функции API.
2) Свалить новый набор команд вместе с заголовком в какой-нибудь stream или в файл (прямо в двоичном формате метафайла) и потом юзать как метафайл. Это должно сработать, т.к. в памяти (и в файле) эти команды идут в том же виде, в каком их выдает енумератор (он просто выдает их по очереди, а не сплошным потоком).
← →
valery_f (2002-05-15 14:24) [4]Да, забыл спросить. У тебя GDI ресурсы не уплывают? У меня просто кошмар - прокачал сотню-другую файлов и хана. Спасает только перезагрузка... Не знаю что и думать...
← →
mari_ra (2002-05-15 14:41) [5]Насколько я знаю, WIN95 некорректно выполняет DeleteEnhMetaFile. Точнее - не освобождает дескриптор вообще %(. Как бороться - тоже пока нигде не нашла...
← →
valery_f (2002-05-15 16:33) [6]Есть идея. Энумератор просто бьет на части метафайл. Что мешает сделать свой энумератор? А в довесок - плейер, который для каждой команды зовет соответствующую API функцию... Блин, о чем я раньше думал?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.014 c