Enhanced metafile как превратить в контур ?
От: xception  
Дата: 23.09.05 11:16
Оценка:
Привет.
Существует необходимость перевести содержимое .EMF файла в набор контуров.
Создал рисунок в Adobe illustrator в котором просто строчка текста и экспортировал в .EMF файл.
Для перевода в контур применяю такой код:


    HENHMETAFILE hemf = GetEnhMetaFile(m_file_name.GET()); 

    //draw the text in a memdc
    CDC* p_dc = memdc.GetDC();
    EnumEnhMetaFile(p_dc->m_hDC, hemf, EnhMetaFileProc, 0, CRect());


    CRect rect(0, 0, memdc.GetWidth(), memdc.GetHeight());

    // draw metafile items in a path
    p_dc->BeginPath();
    BOOL res = PlayEnhMetaFile(p_dc->m_hDC, hemf, rect); 
    if (!p_dc->EndPath())
      return false;

    //get rid of the beziers
    p_dc->FlattenPath();

    //how many points are there in the path?
    POINT* p_points = NULL;
    BYTE*  p_types = NULL;
    int count(0);
    count = p_dc->GetPath(p_points, p_types, count);


Здесь count==0 на выходе (
Не понимаю почему, тем более что команды, присутствующие в EMF файле (трейсил по EnumEnhMetaFile) это команды TextOut, которые поддерживаются BeginPath скобкой...

Кроме того, если просто сделать EnumEnhMetaFile на экран то текст нормально показывается (это я так, для справки

Заранее благодарен за идеи
Re: Enhanced metafile как превратить в контур ?
От: MBo  
Дата: 24.09.05 02:48
Оценка:
Здравствуйте, xception, Вы писали:

X>Не понимаю почему, тем более что команды, присутствующие в EMF файле (трейсил по EnumEnhMetaFile) это команды TextOut, которые поддерживаются BeginPath скобкой...


Шрифт случайно не растровый? Траектории генерируются только для векторных (TTF и др.)
Re[2]: Enhanced metafile как превратить в контур ?
От: xception  
Дата: 26.09.05 07:40
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>Здравствуйте, xception, Вы писали:


X>>Не понимаю почему, тем более что команды, присутствующие в EMF файле (трейсил по EnumEnhMetaFile) это команды TextOut, которые поддерживаются BeginPath скобкой...


MBo>Шрифт случайно не растровый? Траектории генерируются только для векторных (TTF и др.)


Тут прикол в том, что я трейсил и другой файлик, в котором просто загогулину кисточкой нарисовал...
Там выскакивает метакоманда PolyPolygon16, в списке возможных команд для CDC::BeginPath есть команда PolyPolygon, но тем не менее GetPath дает пустой путь в результате
Re: Enhanced metafile как превратить в контур ?
От: OLEGus1 Россия  
Дата: 26.09.05 09:37
Оценка:
Здравствуйте, xception, Вы писали:

X>Заранее благодарен за идеи


А если перевести шрифты в вектора? Тогда не будет textout
Crescite, nos qui vivimus, multiplicamini
Re: Enhanced metafile как превратить в контур ?
От: OLEGus1 Россия  
Дата: 26.09.05 09:40
Оценка:
Здравствуйте, xception, Вы писали:

Да и создание региона может присутствовать в самом метафайле. по идее надо посмотреть предшествующие textout команды
Crescite, nos qui vivimus, multiplicamini
Re[2]: Enhanced metafile как превратить в контур ?
От: xception  
Дата: 28.09.05 14:12
Оценка:
Здравствуйте, OLEGus1, Вы писали:

OLE>Здравствуйте, xception, Вы писали:


X>>Заранее благодарен за идеи


OLE>А если перевести шрифты в вектора? Тогда не будет textout


Перевести шрифты в вектора — это как ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.