私は C++ と OpenGL が初めてです。誰かが以前に書いた (Linux ベースの) C++ アプリケーションがあり、微調整する必要があります。
基本的に、このアプリケーションでは、プロットを含むウィンドウがあります。現在、このウィンドウは、プロットをビットマップ (tga、jpg、および bmp) にエクスポートする機能をサポートしています。プロットの内容を拡張メタ ファイルとして保存する別の関数を追加したいと考えています。
CDC デバイス ハンドラーを取得し、その HDC を使用して、プロットと同じ幅/高さの空の EMF を作成することができましたが、プロットのコンテンツを EMF ファイルに移行する方法の手がかりがありません。これを行うコードはありますか?
空の EMF ファイルを作成するために使用しているコードは次のとおりです。どんな種類のアイデアや助けにも感謝します!
CDC* dc = pWnd->GetDC();
HDC hdcRef;
hdcRef = dc->GetSafeHdc();
CRect rect;
pWnd->GetClientRect(rect);
// Convert client coordinates to .01-mm units.
// Use iWidthMM, iWidthPels, iHeightMM, and
int iWidthMM = GetDeviceCaps (hdcRef, HORZSIZE);
int iHeightMM = GetDeviceCaps (hdcRef, VERTSIZE);
int iWidthPels = GetDeviceCaps (hdcRef, HORZRES);
int iHeightPels = GetDeviceCaps (hdcRef, VERTRES);
rect.left = (rect.left * iWidthMM * 100) / iWidthPels;
rect.top = (rect.top * iHeightMM * 100) / iHeightPels;
rect.right = (rect.right * iWidthMM * 100) / iWidthPels;
rect.bottom = (rect.bottom * iHeightMM * 100) / iHeightPels;
//::SetMapMode(hdcRef, MM_HIMETRIC);
HDC hdcMeta = CreateEnhMetaFile(hdcRef, "C:\\temp\\testEMF.emf", &rect, "Example metafile\0");
if (!hdcMeta)
GenAppWarningMsg("CreateEnhMetaFile", "Error");
// Set the device context back to its original state.
SetMapMode(hdcMeta, MM_ANISOTROPIC);
::ReleaseDC(NULL, hdcRef);
HENHMETAFILE meta = CloseEnhMetaFile (hdcMeta);