メモリ内 (ファイルベースではない) のメタファイルをいくつか作成して表示する必要があります。フォームのパネルのOnPaint
ハンドラーで、次のコードを呼び出します。
Metafile metafile;
using( Graphics offScreenGraphics = Graphics.FromHwndInternal( IntPtr.Zero ) )
{
IntPtr hDC = offScreenGraphics.GetHdc();
metafile = new Metafile( hDC, EmfType.EmfPlusDual );
offScreenGraphics.ReleaseHdc();
}
Graphics graphics = Graphics.FromImage( metafile );
graphics.FillRectangle( Brushes.LightYellow, 0, 0, 100, 100 );
graphics.DrawLine( Pens.Red, 50, 50, 100, 100 );
e.Graphics.DrawImage( metafile, 50, 50 );
ただし、何も表示されず、 で何を描画しようとしてもmetafile
、PhysicalDimension
常に 35x35 のようなものになります。単位が 100 分の 1 ミリであることを考えると、これは小さすぎます。
注:もちろん、これは不自然な例です。同じ方法でグラフィックを描画するためだけにメタファイルを作成するつもりはありません。アプリケーションでメタファイルを渡す必要があります。DrawImage
これは、メソッドで描画できることを確認するための簡単なテストです。