Metafile Clase

Definición

Define un metarchivo gráfico. Un metarchivo contiene registros que describen una secuencia de operaciones de gráficos que se pueden grabar (construir) y reproducir (se muestran). Esta clase no se puede heredar.

public ref class Metafile sealed : System::Drawing::Image
[System.Runtime.InteropServices.ComVisible(false)]
[System.Serializable]
public sealed class Metafile : System.Drawing.Image
[System.Serializable]
public sealed class Metafile : System.Drawing.Image
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Serializable>]
type Metafile = class
    inherit Image
[<System.Serializable>]
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 y Metafile 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 método Save 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 como un archivo Portable Network Graphics (PNG) en su lugar. 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.

Note

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, consulte System.Drawing.Common only supported on Windows (Solo se admite System.Drawing.Common en Windows).

Constructores

Nombre Description
Metafile(IntPtr, Boolean)

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

Metafile(IntPtr, EmfType, String)

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

Metafile(IntPtr, EmfType)

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

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

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

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

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

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

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

Metafile(IntPtr, Rectangle)

Inicializa una nueva instancia de la Metafile clase desde el contexto de dispositivo especificado, enlazado por el rectángulo especificado.

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

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

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

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

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

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

Metafile(IntPtr, RectangleF)

Inicializa una nueva instancia de la Metafile clase desde el contexto de dispositivo especificado, enlazado por el rectángulo especificado.

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

Inicializa una nueva instancia de la Metafile clase a partir del identificador especificado y un WmfPlaceableFileHeader. Además, el deleteWmf parámetro se puede usar para eliminar el identificador cuando se elimina el metarchivo.

Metafile(IntPtr, WmfPlaceableFileHeader)

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

Metafile(Stream, IntPtr, EmfType, String)

Inicializa una nueva instancia de la clase /> de que especifica el formato de la . Además, se puede agregar una cadena que contenga un nombre descriptivo para el nuevo Metafile .

Metafile(Stream, IntPtr, EmfType)

Inicializa una nueva instancia de la clase /> de que especifica el formato de la .

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

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

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

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

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo y la unidad de medida proporcionada.

Metafile(Stream, IntPtr, Rectangle)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo .

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

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

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

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

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo y la unidad de medida proporcionada.

Metafile(Stream, IntPtr, RectangleF)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo .

Metafile(Stream, IntPtr)

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

Metafile(Stream)

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

Metafile(String, IntPtr, EmfType, String)

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

Metafile(String, IntPtr, EmfType)

Inicializa una nueva instancia de la clase /Metafile con el nombre de archivo especificado, un identificador de Windows a un contexto de dispositivo y una enumeración EmfType que especifica el formato del 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 a un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que enlaza el nuevo Metafile, la unidad de medida proporcionada y una enumeración EmfType que especifica el formato del Metafile. También se puede agregar una cadena descriptiva.

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

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

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

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo y la unidad de medida proporcionada. También se puede agregar una cadena descriptiva.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo y la unidad de medida proporcionada.

Metafile(String, IntPtr, Rectangle)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo .

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 a un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que enlaza el nuevo Metafile, la unidad de medida proporcionada y una enumeración EmfType que especifica el formato del Metafile. También se puede agregar una cadena descriptiva.

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

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

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

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo y la unidad de medida proporcionada. También se puede agregar una cadena descriptiva.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo y la unidad de medida proporcionada.

Metafile(String, IntPtr, RectangleF)

Inicializa una nueva instancia de la clase /> de que representa el rectángulo que enlaza el nuevo .

Metafile(String, IntPtr)

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

Metafile(String)

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

Propiedades

Nombre Description
Flags

Obtiene marcas de atributo para los datos de píxeles de este Imageobjeto .

(Heredado de Image)
FrameDimensionsList

Obtiene una matriz de GUID que representan las dimensiones de los marcos de este Imageobjeto .

(Heredado de Image)
Height

Obtiene el alto, en píxeles, de este Imageobjeto .

(Heredado de Image)
HorizontalResolution

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

(Heredado de Image)
Palette

Obtiene o establece la paleta de colores utilizada para este Imageobjeto .

(Heredado de Image)
PhysicalDimension

Obtiene el ancho y el alto de esta imagen.

(Heredado de Image)
PixelFormat

Obtiene el formato de píxel para este Imageobjeto .

(Heredado de Image)
PropertyIdList

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

(Heredado de Image)
PropertyItems

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

(Heredado de Image)
RawFormat

Obtiene el formato de archivo de este Imageobjeto .

(Heredado de Image)
Size

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

(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 este Imageobjeto .

(Heredado de Image)
Width

Obtiene el ancho, en píxeles, de este Imageobjeto .

(Heredado de Image)

Métodos

Nombre Description
Clone()

Crea una copia exacta de este Imageobjeto .

(Heredado de Image)
CreateObjRef(Type)

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

(Heredado de MarshalByRefObject)
Dispose()

Libera todos los recursos usados por este Image.

(Heredado de Image)
Dispose(Boolean)

Libera los recursos no administrados utilizados por Image y, opcionalmente, libera los recursos administrados.

(Heredado de Image)
Equals(Object)

Determina si el objeto especificado es igual al 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 admitidos por el codificador de imágenes especificado.

(Heredado de Image)
GetFrameCount(FrameDimension)

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

(Heredado de Image)
GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetHenhmetafile()

Devuelve un identificador de Windows a un .

GetLifetimeService()

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 MetafileHeader objeto asociado a este Metafileobjeto .

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Devuelve el MetafileHeader asociado al objeto especificado Metafile.

GetMetafileHeader(IntPtr)

Devuelve el MetafileHeader asociado al objeto especificado Metafile.

GetMetafileHeader(Stream)

Devuelve el MetafileHeader asociado al objeto especificado Metafile.

GetMetafileHeader(String)

Devuelve el MetafileHeader asociado al objeto especificado Metafile.

GetPropertyItem(Int32)

Obtiene el elemento de propiedad especificado de este Imageobjeto .

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

Devuelve una miniatura para este Imageobjeto .

(Heredado de Image)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()

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 Objectactual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto actual MarshalByRefObject .

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

Reproduce un registro de metarchivo individual.

RemovePropertyItem(Int32)

Quita el elemento de propiedad especificado de este Image.

(Heredado de Image)
RotateFlip(RotateFlipType)

Gira, voltea o gira y voltea el Imageobjeto .

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

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

(Heredado de Image)
Save(Stream, ImageFormat)

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

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

Guarda esto Image en el archivo especificado, con los parámetros especificados encoder y image-encoder.

(Heredado de Image)
Save(String, ImageFormat)

Lo Image guarda en el archivo especificado en el formato especificado.

(Heredado de Image)
Save(String)

Guarda esto Image en el archivo o secuencia especificados.

(Heredado de Image)
SaveAdd(EncoderParameters)

Agrega un marco al archivo o secuencia especificado en una llamada anterior al Save método . Use este método para guardar fotogramas seleccionados de una imagen de varios fotogramas en otra imagen de varios fotogramas.

(Heredado de Image)
SaveAdd(Image, EncoderParameters)

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

(Heredado de Image)
SelectActiveFrame(FrameDimension, Int32)

Selecciona el marco especificado por la dimensión y el índice.

(Heredado de Image)
SetPropertyItem(PropertyItem)

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

(Heredado de Image)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

Nombre Description
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

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

(Heredado de Image)

Se aplica a