Zobrazení obrázku a jeho uložení do rozšířeného metasouboru
Tato část obsahuje příklad znázorňující vytvoření obrázku a proces uložení odpovídajících záznamů do metasouboru. Příklad nakreslí obrázek na displej nebo ho uloží do metasouboru. Pokud je zadaný kontextový popisovač zařízení pro zobrazení, nakreslí obrázek na obrazovku pomocí různých funkcí GDI. Pokud je zadaný kontext zařízení s rozšířeným metasouborem, uloží stejný obrázek do rozšířeného metasouboru.
void DrawOrStore(HWND hwnd, HDC hdcMeta, HDC hdcDisplay)
{
RECT rect;
HDC hDC;
int fnMapModeOld;
HBRUSH hbrOld;
// Draw it to the display DC or store it in the metafile device context.
if (hdcMeta)
hDC = hdcMeta;
else
hDC = hdcDisplay;
// Set the mapping mode in the device context.
fnMapModeOld = SetMapMode(hDC, MM_LOENGLISH);
// Find the midpoint of the client area.
GetClientRect(hwnd, (LPRECT)&rect);
DPtoLP(hDC, (LPPOINT)&rect, 2);
// Select a gray brush.
hbrOld = SelectObject(hDC, GetStockObject(GRAY_BRUSH));
// Draw a circle with a one inch radius.
Ellipse(hDC, (rect.right/2 - 100), (rect.bottom/2 + 100),
(rect.right/2 + 100), (rect.bottom/2 - 100));
// Perform additional drawing here.
// Set the device context back to its original state.
SetMapMode(hDC, fnMapModeOld);
SelectObject(hDC, hbrOld);
}