在带有 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;
}