Esta documentación está archivada y no tiene mantenimiento.

Metafile (Clase)

Actualización: noviembre 2007

Define un metarchivo gráfico. Un metarchivo contiene registros que describen una secuencia de gráficos que pueden grabarse (construirse) y reproducirse (mostrarse). Esta clase no se hereda.

Espacio de nombres:  System.Drawing.Imaging
Ensamblado:  System.Drawing (en System.Drawing.dll)

[SerializableAttribute]
public sealed class Metafile : Image
/** @attribute SerializableAttribute */ 
public final class Metafile extends Image
public final class Metafile extends Image

Si utiliza el método Save para guardar una imagen gráfica como un archivo con formato de metarchivo de Windows (WMF) o formato de metarchivo ampliado (EMF), en lugar de ello, el archivo resultante se guardará con el formato de gráficos de red portátiles (PNG). Este comportamiento ocurre porque el componente GDI+ de .NET Framework no tiene un codificador que se pueda usar para guardar archivos en formato .wmf o .emf.

En el ejemplo de código siguiente se muestra la forma de crear un Metafile y utilizar el método PlayRecord.


using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;

// for Marshal.Copy
using System.Runtime.InteropServices; 

public class Form1 : Form
{
    private Metafile metafile1;
    private Graphics.EnumerateMetafileProc metafileDelegate;
    private Point destPoint;
    public Form1()
    {
        metafile1 = new Metafile(@"C:\Test.wmf");
        metafileDelegate = new Graphics.EnumerateMetafileProc(MetafileCallback);
        destPoint = new Point(20, 10);
    }
    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.EnumerateMetafile(metafile1, destPoint, metafileDelegate);
    }
    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);
        }

        metafile1.PlayRecord(recordType, flags, dataSize, dataArray);

        return true;
    }

    static void Main()
    {
        Application.Run(new Form1());
    }
}


System.Object
  System.MarshalByRefObject
    System.Drawing.Image
      System.Drawing.Imaging.Metafile

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0
Mostrar: