¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo

Metafile (Clase)

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
SerializableAttribute 
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

Los miembros estáticos públicos (Shared en Visual Basic) 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 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft