Metafile Clase

Definición

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.

public ref class Metafile sealed : System::Drawing::Image
public sealed class Metafile : System.Drawing.Image
[System.Serializable]
public sealed class Metafile : System.Drawing.Image
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class Metafile : System.Drawing.Image
type Metafile = class
    inherit Image
[<System.Serializable>]
type Metafile = class
    inherit Image
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type Metafile = class
    inherit Image
Public NotInheritable Class Metafile
Inherits Image
Herencia
Atributos

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear Metafile y usar el PlayRecord método .


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());
    }
}
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Windows.Forms
' for Marshal.Copy
Imports System.Runtime.InteropServices


Public Class Form1
    Inherits Form
    Private metafile1 As Metafile
    Private metafileDelegate As Graphics.EnumerateMetafileProc
    Private destPoint As Point
    
    Public Sub New() 
        metafile1 = New Metafile("C:\test.wmf")
        metafileDelegate = New Graphics.EnumerateMetafileProc(AddressOf MetafileCallback)
        destPoint = New Point(20, 10)
    
    End Sub
    
    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 
        e.Graphics.EnumerateMetafile(metafile1, destPoint, metafileDelegate)
    
    End Sub
    
    Private Function MetafileCallback(ByVal recordType As _
        EmfPlusRecordType, ByVal flags As Integer, ByVal dataSize As Integer, _
        ByVal data As IntPtr, ByVal callbackData As PlayRecordCallback) As Boolean

        Dim dataArray As Byte() = Nothing
        If data <> IntPtr.Zero Then

            ' 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)
        End If

        metafile1.PlayRecord(recordType, flags, dataSize, dataArray)
        Return True

    End Function
    
    Shared Sub Main() 
        Application.Run(New Form1())
    End Sub

End Class

Comentarios

Cuando se usa el Save método para guardar una imagen gráfica como un archivo de formato de metarchivo de Windows (WMF) o formato de metarchivo mejorado (EMF), el archivo resultante se guarda en su lugar como un archivo portable network Graphics (PNG). Este comportamiento se produce porque el componente GDI+ de .NET Framework no tiene un codificador que puede usar para guardar archivos como archivos .wmf o .emf.

Nota

En .NET 6 y versiones posteriores, el paquete System.Drawing.Common, que incluye este tipo, solo se admite en sistemas operativos Windows. El uso de este tipo en aplicaciones multiplataforma provoca advertencias en tiempo de compilación y excepciones en tiempo de ejecución. Para obtener más información, vea System.Drawing.Common solo compatible con Windows.

Constructores

Metafile(IntPtr, Boolean)

Inicializa una nueva instancia de la clase Metafile a partir del identificador especificado.

Metafile(IntPtr, EmfType)

Inicializa una nueva instancia de la clase Metafile a partir del identificador de un contexto de dispositivo especificado, y de una enumeración EmfType que especifica el formato del Metafile.

Metafile(IntPtr, EmfType, String)

Inicializa una nueva instancia de la clase Metafile a partir del identificador de un contexto de dispositivo especificado, y de una enumeración EmfType que especifica el formato del Metafile. Se puede incluir una cadena para asignar un nombre al archivo.

Metafile(IntPtr, Rectangle)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado.

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado que utiliza la unidad de medida indicada.

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado que utiliza la unidad de medida indicada, y una enumeración EmfType que especifica el formato de Metafile.

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType, String)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado que utiliza la unidad de medida indicada, y una enumeración EmfType que especifica el formato de Metafile. Se puede incluir una cadena para asignar un nombre al archivo.

Metafile(IntPtr, RectangleF)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado.

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado que utiliza la unidad de medida indicada.

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado que utiliza la unidad de medida indicada, y una enumeración EmfType que especifica el formato de Metafile.

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType, String)

Inicializa una nueva instancia de la clase Metafile a partir del contexto de dispositivo especificado, delimitado por el rectángulo especificado que utiliza la unidad de medida indicada, y una enumeración EmfType que especifica el formato de Metafile. Se puede incluir una cadena para asignar un nombre al archivo.

Metafile(IntPtr, WmfPlaceableFileHeader)

Inicializa una nueva instancia de la clase Metafile a partir del identificador especificado y un WmfPlaceableFileHeader.

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

Inicializa una nueva instancia de la clase Metafile a partir del identificador especificado y un WmfPlaceableFileHeader. El parámetro deleteWmf también se puede utilizar para borrar el identificador cuando se elimina el metarchivo.

Metafile(Stream)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado.

Metafile(Stream, IntPtr)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado.

Metafile(Stream, IntPtr, EmfType)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una enumeración EmfType que especifica el formato de Metafile.

Metafile(Stream, IntPtr, EmfType, String)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una enumeración EmfType que especifica el formato de Metafile. También se puede agregar una cadena que contiene un nombre descriptivo para el nuevo Metafile.

Metafile(Stream, IntPtr, Rectangle)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una estructura Rectangle que representa el rectángulo que delimita el nuevo Metafile.

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que delimita el nuevo Metafile y la unidad de medida indicada.

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una estructura Rectangle que representa el rectángulo que delimita el nuevo Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile.

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit, EmfType, String)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una estructura Rectangle que representa el rectángulo que delimita el nuevo Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile. También se puede agregar una cadena que contiene un nombre descriptivo para el nuevo Metafile.

Metafile(Stream, IntPtr, RectangleF)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una estructura RectangleF que representa el rectángulo que delimita el nuevo Metafile.

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que delimita el nuevo Metafile y la unidad de medida indicada.

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una estructura RectangleF que representa el rectángulo que delimita el nuevo Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile.

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit, EmfType, String)

Inicializa una nueva instancia de la clase Metafile a partir del flujo de datos especificado, un identificador de Windows de un contexto de dispositivo, y una estructura RectangleF que representa el rectángulo que delimita el nuevo Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile. También se puede agregar una cadena que contiene un nombre descriptivo para el nuevo Metafile.

Metafile(String)

Inicializa una nueva instancia de la clase Metafile a partir del nombre de archivo especificado.

Metafile(String, IntPtr)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado.

Metafile(String, IntPtr, EmfType)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo y una enumeración EmfType que especifica el formato de Metafile.

Metafile(String, IntPtr, EmfType, String)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo y una enumeración EmfType que especifica el formato de Metafile. También se puede agregar una cadena descriptiva.

Metafile(String, IntPtr, Rectangle)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo y una estructura Rectangle que representa el rectángulo que delimita el nuevo Metafile.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que delimita el nuevo objeto Metafile y la unidad de medida indicada.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que delimita el nuevo objeto Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, EmfType, String)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que delimita el nuevo objeto Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile. También se puede agregar una cadena de caracteres descriptiva.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, String)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que delimita el nuevo objeto Metafile y la unidad de medida indicada. También se puede agregar una cadena de caracteres descriptiva.

Metafile(String, IntPtr, RectangleF)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo y una estructura RectangleF que representa el rectángulo que delimita el nuevo Metafile.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que delimita el nuevo objeto Metafile y la unidad de medida indicada.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que delimita el nuevo objeto Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, EmfType, String)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que delimita el nuevo objeto Metafile, la unidad de medida indicada y una enumeración EmfType que especifica el formato de Metafile. También se puede agregar una cadena de caracteres descriptiva.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, String)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows de un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que delimita el nuevo objeto Metafile y la unidad de medida indicada. También se puede agregar una cadena de caracteres descriptiva.

Propiedades

Flags

Obtiene marcadores de atributo para los datos de píxel de Image.

(Heredado de Image)
FrameDimensionsList

Obtiene una matriz de GUID que representa las dimensiones de los marcos dentro de Image.

(Heredado de Image)
Height

Obtiene el alto en píxeles de Image.

(Heredado de Image)
HorizontalResolution

Obtiene la resolución horizontal, en píxeles por pulgada, de Image.

(Heredado de Image)
Palette

Obtiene o establece la paleta de colores utilizada para Image.

(Heredado de Image)
PhysicalDimension

Obtiene el ancho y el alto de esta imagen.

(Heredado de Image)
PixelFormat

Obtiene el formato de píxel de Image.

(Heredado de Image)
PropertyIdList

Obtiene los identificadores de los elementos de propiedad almacenados en Image.

(Heredado de Image)
PropertyItems

Obtiene todos los elementos de propiedad (fragmentos de metadatos) almacenados en Image.

(Heredado de Image)
RawFormat

Obtiene el formato de archivo de este Image.

(Heredado de Image)
Size

Obtiene el ancho y el alto de esta imagen, expresado en píxeles.

(Heredado de Image)
Tag

Obtiene o establece un objeto que proporciona datos adicionales sobre la imagen.

(Heredado de Image)
VerticalResolution

Obtiene la resolución vertical, en píxeles por pulgada, de Image.

(Heredado de Image)
Width

Obtiene el ancho en píxeles de Image.

(Heredado de Image)

Métodos

Clone()

Crea una copia exacta de este objeto Image.

(Heredado de Image)
CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera todos los recursos utilizados por este Image.

(Heredado de Image)
Dispose(Boolean)

Libera los recursos no administrados que usa Image y, de forma opcional, libera los recursos administrados.

(Heredado de Image)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetBounds(GraphicsUnit)

Obtiene los límites de la imagen en la unidad especificada.

(Heredado de Image)
GetEncoderParameterList(Guid)

Devuelve información sobre los parámetros que admite el codificador de imágenes especificado.

(Heredado de Image)
GetFrameCount(FrameDimension)

Devuelve el número de marcos de la dimensión especificada.

(Heredado de Image)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetHenhmetafile()

Devuelve un identificador de Windows de un objeto Metafile mejorado.

GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetMetafileHeader()

Devuelve el objeto MetafileHeader asociado a esta Metafile.

GetMetafileHeader(IntPtr)

Devuelve el MetafileHeader asociado al Metafile especificado.

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Devuelve el MetafileHeader asociado al Metafile especificado.

GetMetafileHeader(Stream)

Devuelve el MetafileHeader asociado al Metafile especificado.

GetMetafileHeader(String)

Devuelve el MetafileHeader asociado al Metafile especificado.

GetPropertyItem(Int32)

Obtiene el elemento de propiedad especificado de Image.

(Heredado de Image)
GetThumbnailImage(Int32, Int32, Image+GetThumbnailImageAbort, IntPtr)

Devuelve una miniatura de Image.

(Heredado de Image)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
PlayRecord(EmfPlusRecordType, Int32, Int32, Byte[])

Reproduce un registro de metarchivo individual.

RemovePropertyItem(Int32)

Quita el elemento de propiedad especificado de Image.

(Heredado de Image)
RotateFlip(RotateFlipType)

Gira, voltea o gira y voltea el Image.

(Heredado de Image)
Save(Stream, ImageCodecInfo, EncoderParameters)

Guarda esta imagen en la secuencia especificada, con el codificador y los parámetros de codificador de imagen especificados.

(Heredado de Image)
Save(Stream, ImageFormat)

Guarda esta imagen en la secuencia especificada con el formato especificado.

(Heredado de Image)
Save(String)

Guarda Image en la secuencia o archivo especificado.

(Heredado de Image)
Save(String, ImageCodecInfo, EncoderParameters)

Guarda Image en el archivo especificado, con el codificador y los parámetros de codificador de imagen especificados.

(Heredado de Image)
Save(String, ImageFormat)

Guarda Image en el archivo especificado con el formato especificado.

(Heredado de Image)
SaveAdd(EncoderParameters)

Agrega un marco al archivo o la secuencia especificados en una llamada anterior al método Save. Utilice este método para guardar los marcos seleccionados de una imagen de varios marcos en otra imagen de varios marcos.

(Heredado de Image)
SaveAdd(Image, EncoderParameters)

Agrega un marco al archivo o la secuencia especificados en una llamada anterior al método Save.

(Heredado de Image)
SelectActiveFrame(FrameDimension, Int32)

Selecciona el marco que especifican la dimensión y el índice.

(Heredado de Image)
SetPropertyItem(PropertyItem)

Almacena un elemento de propiedad (fragmento de metadatos) en Image.

(Heredado de Image)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Llena SerializationInfo con los datos necesarios para serializar el objeto de destino.

(Heredado de Image)

Se aplica a