在使用GDI +的C++中,我想繪製一個圖元文件,但修改它的方式是用我在程序中創建的圖形替換筆刷和筆。我希望使用這個筆和這支筆來代替元文件中指定的其他人。如何在繪圖時覆蓋圖元文件的筆和畫筆?
我怎麼能做到這一點?
我試圖使用EnumerateMetafile和PlayRecord,但我沒有看到如何獲得使用筆和畫筆的控制權。我試過下面的代碼來選擇底層HDC的當前Pen和Brush,但是因爲我期待它不起作用...
有什麼建議嗎? (我想避免重寫所有EMF記錄類型的完整處理)
在此先感謝。
暫定代碼(不會做任何事情,如預期):
// callback function called by EnumerateMetafile:
BOOL CALLBACK metaCallback(
EmfPlusRecordType recordType,
unsigned int flags, unsigned int dataSize, const unsigned char* pStr, void* metafile)
{
HDC hdc = myGraphics->GetHDC();
SelectObject(hdc, GetStockObject(WHITE_PEN));
myGraphics->ReleaseHDC(hdc);
static_cast <Metafile*>(metafile)->PlayRecord(recordType, flags, dataSize, pStr);
return TRUE;
}
非常感謝,我現在只看到你的答案(不知道爲什麼我沒有得到或看到通知)。 – bfredo123