Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.017 c
14-47686
SPeller
2002-06-16 04:34
2002.07.15
Звук


6-47625
Сергей Л.
2002-04-26 21:29
2002.07.15
Как проверить открыт ли порт на удаленном компютере


4-47874
Atrem
2002-05-10 22:24
2002.07.15
Оконная процедура


1-47579
alxx
2002-06-28 10:16
2002.07.15
Составляющие шрифта


7-47838
Lego
2002-04-23 05:01
2002.07.15
Есть кто-нибудь разбирающийся в перешивке ПЗУ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский