Тема: Как из EMF вытащить контуры

Есть необходимость создать рисунок из другой программы в кад. Туа можно сохранить его в emf. Вопрос в том как к этом формате получить контуры (их достатоочно) - ни у кого нет наработок?
Лучше на vba,но сойдет любой язык

Re: Как из EMF вытащить контуры

> dvim
Есть такая идея:
1) В AutoCAD есть команда _WMFIN, которая позволяет вставить wmf-файл в чертеж в виде примитивов AutoCAD (полилинии, тексты, и т.д.). Но WMF и EMF - это разные форматы.
2) Есть программа (на C++), которая позволяет конвертировать EMF в WMF.
Исходный код здесь: http://www.codeproject.com/vcpp/gdiplus … onvert.asp
Для начала этого может быть достаточно.

Re: Как из EMF вытащить контуры

Спасибо, поможет smile
Это и хотелось

Re: Как из EMF вытащить контуры

кто -то может скинуть (или откомпились) *,ехе
-это под 7 С++, которых так сказать нет...
на почту

Re: Как из EMF вытащить контуры

> dvim
Скинул. Но это консольное приложение. Если тебе понадобится что-то в нем поменять - придется пользоваться VC 7.0 или выше.

Re: Как из EMF вытащить контуры

А этот код раюотает и в VC 6.0:

void Emf2Wmf(char *sFileEmf, char *sFileWmf)
{
  HENHMETAFILE hEmf;
  HMETAFILE hWmf;
  HDC hDc,hDcComp;
  UINT uSize;
  BYTE *pBuffer;
  hDc = GetDC(GetDesktopWindow());
  hDcComp = CreateCompatibleDC(hDc);
  ReleaseDC(GetDesktopWindow(), hDc);
  SetMapMode(hDcComp,MM_ANISOTROPIC);
  hEmf = GetEnhMetaFile(sFileEmf);
  uSize = GetWinMetaFileBits(hEmf, 0, NULL, MM_ANISOTROPIC, hDcComp);
  pBuffer = (BYTE *) GlobalAlloc(GPTR, uSize);
  GetWinMetaFileBits(hEmf, uSize, pBuffer, MM_ANISOTROPIC, hDcComp);
  hWmf = SetMetaFileBitsEx(uSize, pBuffer);
  PlayMetaFile(hDcComp, hWmf);
  CopyMetaFile(hWmf, sFileWmf);
  DeleteMetaFile(hWmf);
  DeleteEnhMetaFile(hEmf);
  GlobalFree(pBuffer);
  DeleteDC(hDcComp);
}