В C++ с GDI+ я хотел бы нарисовать метафайл, но изменив его таким образом, чтобы кисти и перья были заменены теми, которые я создал в своей программе. Я бы хотел, чтобы эта кисть и это перо использовались вместо любых других, указанных в самом метафайле.
Как я мог этого добиться?
Я пытался использовать EnumerateMetafile и PlayRecord, но не понимаю, как получить контроль над используемыми пером и кистью. Я попробовал приведенный ниже код, чтобы выбрать текущее перо и кисть базового HDC, но, как я и ожидал, он не работает...
Любое предложение, пожалуйста? (Я хотел бы избежать переписывания полной обработки всех типов записей 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;
}