掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
拡張メタファイルをビットマップに変換するには (ID:64322)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
---------------- HENHMETAFILE emf; ENHMETAHEADER header; SIZE size RECT rect; HDC pdc, hdc; HBITMAP hbm; HGDIOBJ old; emf = GetEnhMetaFile(...); GetEnhMetaFileHeader(emf, sizeof(header), &header); pdc = GetDC(NULL); /* 0.01mm -> pixel */ size.cx = ::MulDiv(header.rclFrame.right - header.rclFrame.left, GetDeviceCaps(pdc, LOGPIXELSX), 2540); size.cy = ::MulDiv(header.rclFrame.bottom - header.rclFrame.top, GetDeviceCaps(pdc, LOGPIXELSY), 2540); hdc = CreateCompatibleDC(pdc); hbm = CreateCompatibleBitmap(pdc, size.cx, size.cy); old = SelectObject(hdc, hbm); SetRect(&rect, 0, 0, size.cx, size.cy); /* GetEnhMetaFilePaletteEntries() */ PlayEnhMetaFile(hdc, emf, &rect); SelectObject(hdc, old); : GetDibits(, hbm, ...); : ---------------- 画面色深度が16Bit環境等で色情報が欠損するのが嫌なら CreateCompatibleBitmap() では無く CreateDIBSection() の使用(GetDibits() は不要になる)を勧める ていうかこのケースでは処理速度等の面から見ても CreateDIBSection() の方が良さそう
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.