拡張メタファイル操作
拡張メタファイルの ハンドルを使用して、次のタスクを実行できます。
- 拡張メタファイルに格納されている画像を表示します。
- 拡張メタファイルのコピーを作成します。
- 拡張メタファイルを編集します。
- 拡張メタファイルに格納されている省略可能な説明を取得します。
- 拡張メタファイル ヘッダーのコピーを取得します。
- 拡張メタファイルのバイナリ バージョンを取得します。
- オプションのパレットで色を列挙します。
これらのタスクについては、このトピックの残りの部分のセクションで説明します。
拡張メタファイルに保存されている画像を表示する
PlayEnhMetaFile 関数を使用して、拡張メタファイルに格納されている画像を表示できます。 拡張メタファイル レコードの形式に関係なく、関数に拡張メタファイルへのハンドルを渡します。 ただし、拡張メタファイル内のレコードを列挙して特定の GDI 関数を検索し、関数のパラメーターを何らかの方法で変更することが望ましい場合があります。 これを行うには、 EnumEnhMetaFile を使用し、コールバック関数 EnhMetaFileProc を指定して、拡張メタファイル レコードを処理できます。 拡張メタファイル レコードのパラメーターを変更するには、レコード内のパラメーターの形式を知っている必要があります。
拡張メタファイルのコピーを作成する
一部のアプリケーションでは、ユーザーが元のファイルを変更できるようにする前に、ファイルの一時バックアップ (または複製) コピーが作成されます。 アプリケーションは、 CopyEnhMetaFile 関数を呼び出し、拡張メタファイルを識別するハンドルを指定し、新しいファイルの名前へのポインターを指定することで、拡張メタファイルのバックアップ コピーを作成できます。
メモリベースの拡張形式メタファイルを作成するには、 SetEnhMetaFileBits 関数を呼び出します。
拡張メタファイルを編集する
ほとんどの描画、図、およびコンピューター支援設計 (CAD) アプリケーションでは、拡張メタファイルに格納されている画像を編集する手段が必要です。 拡張メタファイルの編集は複雑なタスクですが、 EnumEnhMetaFile 関数を他の関数と組み合わせて使用して、アプリケーションでこの機能を提供できます。 EnumEnhMetaFile 関数とそれに関連付けられているコールバック関数 EnhMetaFileProc を使用すると、アプリケーションで拡張メタファイル内の個々のレコードを処理できます。
拡張メタファイルに格納されている省略可能な説明を取得する
一部のアプリケーションでは、[ 開く ] ダイアログ ボックスに、拡張メタファイルのテキスト説明と対応するファイル名が表示されます。 この文字列が拡張メタファイルに存在するかどうかを判断するには、 GetEnhMetaFileHeader 関数を使用してメタファイル ヘッダーを取得し、そのメンバーの 1 つを調べます。 文字列が存在する場合、アプリケーションは GetEnhMetaFileDescription 関数を呼び出して文字列を取得します。
拡張メタファイルのバイナリ バージョンを取得する
メタファイルの内容を取得するには、 GetEnhMetaFileBits 関数を呼び出します。ただし、コンテンツを取得する前に、ファイルのサイズを指定する必要があります。 サイズを取得するには、 GetEnhMetaFileHeader 関数を使用して、適切なメンバーを調べることができます。
オプション パレットで色を列挙する
さまざまな出力デバイスに画像を表示するときに一貫した色を実現するには、 CreatePalette 関数を呼び出し、拡張メタファイルに論理パレットを格納します。 拡張メタファイルに格納されている画像を表示するアプリケーションは、このパレットを取得し、画像を表示する前に RealizePalette 関数を呼び出します。 パレットが拡張メタファイルに格納されているかどうかを確認するには、メタファイル ヘッダーを取得し、適切なメンバーを調べます。 パレットが存在する場合は、 GetEnhMetaFilePaletteEntries 関数を呼び出して、論理パレットを取得できます。