Главная страница
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.01 c
1-47465
marat2002
2002-06-27 12:06
2002.07.15
Где описана функция MakeWord


14-47694
Tahion
2002-06-15 08:36
2002.07.15
CheckListBox, у которого ScrollBar-ы Flat стиля


3-47162
Dark Bird
2002-06-19 03:12
2002.07.15
Модификация TTable


1-47553
Stas Ant
2002-06-28 07:39
2002.07.15
Как сделать паузу в миллисекундах.


1-47520
dihlos
2002-07-04 14:50
2002.07.15
Осциллограф