Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

Как создать и заполнить 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 вся ветка

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-47774
Dimka Maslov
2002-06-14 11:20
2002.07.15
Главный секрет богатства дядюшки Билли


14-47807
GeForce2 MX 400
2002-06-16 20:45
2002.07.15
DLL ы


1-47333
Ricks
2002-06-30 18:57
2002.07.15
Ресурсы: 32-битный Bitmap


1-47342
Dimedrol
2002-07-01 13:34
2002.07.15
Форма прячется...


14-47682
MJH
2002-06-17 09:55
2002.07.15
Кто-то что-то хотел сделать да никак не решили чего!?