指定した Metafile オブジェクトのレコードをコールバック メソッドに一度に 1 つずつ送信して、指定した点に表示します。
Overloads Public Sub EnumerateMetafile( _
ByVal metafile As Metafile, _ ByVal destPoint As Point, _ ByVal callback As Graphics.EnumerateMetafileProc _)
[C#]
public void EnumerateMetafile(Metafilemetafile,PointdestPoint,Graphics.EnumerateMetafileProccallback);
[C++]
public: void EnumerateMetafile(Metafile* metafile,PointdestPoint,Graphics.EnumerateMetafileProc* callback);
[JScript]
public function EnumerateMetafile(
metafile : Metafile,destPoint : Point,callback : Graphics.EnumerateMetafileProc);
パラメータ
- metafile
列挙する Metafile オブジェクト。 - destPoint
描画するメタファイルの左上隅の位置を指定する Point 構造体。 - callback
メタファイル レコードの送信先のメソッドを指定する Graphics.EnumerateMetafileProc デリゲート。
戻り値
このメソッドは値を返しません。
解説
このメソッドは、指定したメタファイルに含まれるレコードを列挙します。各レコードは、 callback パラメータで指定されるコールバック メソッドに個別に送信されます。通常、コールバック メソッドは、 PlayRecord メソッドを呼び出してレコードを "再生" することにより描画します。
コールバック メソッドは、 Metafile.PlayRecord を呼び出す場合、列挙する特定の Metafile オブジェクトの PlayRecord メソッドを呼び出す必要があります。
使用例
[C#] 次の例では、プライベート メンバの 1 つとして Metafile オブジェクトを含むフォームを作成します。OnPaint メソッドで EnumerateMetafile が呼び出され、そこからフォームの MetafileCallback メソッドがメタファイル中の各レコードに対して呼び出されます。MetafileCallback メソッドは、 PlayRecord メソッドを呼び出します。MetafileCallback メソッドはレコード データを IntPtr として受け取りますが、 PlayRecord メソッドはバイト配列のレコード データを前提としていることに注意してください。Marshal.Copy を呼び出すと、レコード データは、 PlayRecord に渡せるようにバイト配列にコピーされます。
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Runtime.InteropServices; // for Marshal.Copy
public class Form1 : Form
{
private Metafile m_metafile;
private Graphics.EnumerateMetafileProc m_delegate;
private Point m_destPoint;
public Form1()
{
m_metafile = new Metafile("MyMetafile.emf");
m_delegate = new Graphics.EnumerateMetafileProc(MetafileCallback);
m_destPoint = new Point(20, 10);
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.EnumerateMetafile(m_metafile, m_destPoint, m_delegate);
}
private bool MetafileCallback(
EmfPlusRecordType recordType,
int flags,
int dataSize,
IntPtr data,
PlayRecordCallback callbackData)
{
byte[] dataArray = null;
if (data != IntPtr.Zero)
{
// Copy the unmanaged record to a managed byte buffer
// that can be used by PlayRecord.
dataArray = new byte[dataSize];
Marshal.Copy(data, dataArray, 0, dataSize);
}
m_metafile.PlayRecord(recordType, flags, dataSize, dataArray);
return true;
}
static void Main()
{
Application.Run(new Form1());
}
}
[Visual Basic, C++, JScript] Visual Basic、C++、および JScript のサンプルはありません。C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
Graphics クラス | Graphics メンバ | System.Drawing 名前空間 | Graphics.EnumerateMetafile オーバーロードの一覧