次の方法で共有


拡張メタファイル操作

拡張メタファイルのハンドルを使用して、次のタスクを実行できます。

  • 拡張メタファイルに格納されている画像を表示します。
  • 拡張メタファイルのコピーを作成します。
  • 拡張メタファイルを編集します。
  • 拡張メタファイルに格納されている省略可能な説明を取得します。
  • 拡張メタファイル ヘッダーのコピーを取得します。
  • 拡張メタファイルのバイナリ バージョンを取得します。
  • オプションのパレットで色を列挙します。

これらのタスクについては、このトピックの残りの部分のセクションで説明します。

拡張メタファイルに保存されている画像を表示する

PlayEnhMetaFile 関数を使用して、拡張メタファイルに格納されている画像を表示できます。 拡張メタファイル レコードの形式に関係なく、関数に拡張メタファイルへのハンドルを渡します。 ただし、拡張メタファイル内のレコードを列挙して特定の GDI 関数を検索し、何らかの方法で関数のパラメーターを変更することが望ましい場合があります。 これを行うには、EnumEnhMetaFile使用し、拡張メタファイル レコードを処理するためのコールバック関数 (EnhMetaFileProc) を提供します。 拡張メタファイル レコードのパラメーターを変更するには、レコード内のパラメーターの形式を知っている必要があります。

拡張メタファイルのコピーを作成する

一部のアプリケーションでは、ユーザーが元のファイルを変更できるようにする前に、ファイルの一時バックアップ (または重複) コピーが作成されます。 アプリケーションでは、拡張メタファイルのバックアップ コピーを作成するには、CopyEnhMetaFile 関数を呼び出し、拡張メタファイルを識別するハンドルを指定し、新しいファイルの名前へのポインターを指定します。

メモリ ベースの拡張形式メタファイルを作成するには、setEnhMetaFileBits関数呼び出します。

拡張メタファイルを編集する

ほとんどの描画、図、およびコンピューター支援設計 (CAD) アプリケーションでは、拡張メタファイルに保存された画像を編集する手段が必要です。 拡張メタファイルの編集は複雑な作業ですが、EnumEnhMetaFile 関数を他の関数と組み合わせて使用して、アプリケーションでこの機能を提供できます。 EnumEnhMetaFile 関数とそれに関連付けられているコールバック関数 (EnhMetaFileProc) を使用すると、アプリケーションは拡張メタファイル内の個々のレコードを処理できます。

拡張メタファイルに格納されている省略可能な説明を取得する

一部のアプリケーションでは、[開く] ダイアログ ボックスに、対応するファイル名を持つ拡張メタファイルのテキストの説明 表示されます。 この文字列が拡張メタファイルに存在するかどうかを判断するには、GetEnhMetaFileHeader 関数を使用してメタファイル ヘッダーを取得し、そのメンバーの 1 つを調べます。 文字列が存在する場合、GetEnhMetaFileDescription 関数を呼び出して取得します。

拡張メタファイルのバイナリ バージョンを取得する

メタファイルの内容を取得するには、GetEnhMetaFileBits 関数を呼び出します。ただし、内容を取得する前に、ファイルのサイズを指定する必要があります。 サイズを取得するには、GetEnhMetaFileHeader 関数を使用して、適切なメンバーを調べることができます。

オプション パレットの色を列挙する

さまざまな出力デバイスに画像を表示するときに一貫した色を実現するには、CreatePalette 関数を呼び出し、拡張メタファイルに論理パレットを格納します。 拡張メタファイルに格納されている画像を表示するアプリケーションは、このパレットを取得し、画像を表示する前に、RealizePalette 関数を呼び出します。 パレットが拡張メタファイルに格納されているかどうかを確認するには、メタファイル ヘッダーを取得し、適切なメンバーを調べます。 パレットが存在する場合は、GetEnhMetaFilePaletteEntries 関数を呼び出して、論理パレットを取得できます。