Compartir vía


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.Serializable]
public sealed class Metafile : System.Drawing.Image
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class Metafile : System.Drawing.Image
public sealed class Metafile : System.Drawing.Image
[<System.Serializable>]
type Metafile = class
    inherit Image
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type Metafile = class
    inherit Image
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 un Metafile y usar 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());
    }
}
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 usas 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 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 se admite en Windows.

Constructores

Metafile(IntPtr, Boolean)

Inicializa una nueva instancia de la clase Metafile desde el identificador especificado.

Metafile(IntPtr, EmfType, String)

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

Metafile(IntPtr, EmfType)

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

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

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

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

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

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile desde el 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 clase Metafile desde el contexto de dispositivo especificado, enlazado por el rectángulo especificado.

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

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

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

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

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

Inicializa una nueva instancia de la clase Metafile desde el 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 clase Metafile desde el contexto de dispositivo especificado, enlazado por el rectángulo especificado.

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

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

Metafile(IntPtr, WmfPlaceableFileHeader)

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

Metafile(Stream, IntPtr, EmfType, String)

Inicializa una nueva instancia de la clase Metafile desde el flujo de datos especificado, un identificador de Windows a un contexto de dispositivo y una enumeración EmfType que especifica el formato del Metafile. 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 Metafile desde el flujo de datos especificado, un identificador de Windows a un contexto de dispositivo y una enumeración EmfType que especifica el formato del Metafile.

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

Inicializa una nueva instancia de la clase Metafile desde el flujo de datos especificado, un identificador de Windows a un contexto de dispositivo, una estructura de Rectangle que representa el rectángulo que enlaza la nueva Metafile, la unidad de medida proporcionada y una enumeración EmfType que especifica el formato del Metafile. Se puede agregar una cadena que contenga 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 identificador de Windows a un contexto de dispositivo, una estructura de Rectangle que representa el rectángulo que enlaza la nueva 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 Metafile a partir del flujo de datos especificado, un identificador de Windows a un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que enlaza la nueva Metafiley la unidad de medida proporcionada.

Metafile(Stream, IntPtr, Rectangle)

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

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

Inicializa una nueva instancia de la clase Metafile desde el flujo de datos especificado, un identificador de Windows a un contexto de dispositivo, una estructura de RectangleF que representa el rectángulo que enlaza la nueva Metafile, la unidad de medida proporcionada y una enumeración EmfType que especifica el formato del Metafile. Se puede agregar una cadena que contenga 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 identificador de Windows a un contexto de dispositivo, una estructura de RectangleF que representa el rectángulo que enlaza la nueva 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 Metafile a partir del flujo de datos especificado, un identificador de Windows a un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que enlaza la nueva Metafiley la unidad de medida proporcionada.

Metafile(Stream, IntPtr, RectangleF)

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

Metafile(Stream, IntPtr)

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

Metafile(Stream)

Inicializa una nueva instancia de la clase Metafile 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 para 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 para 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 para un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que enlaza la nueva 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 para un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que enlaza la nueva 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 Metafile con el nombre de archivo especificado, un identificador de Windows para un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que enlaza la nueva Metafiley 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 Metafile con el nombre de archivo especificado, un identificador de Windows para un contexto de dispositivo, una estructura Rectangle que representa el rectángulo que enlaza la nueva Metafiley la unidad de medida proporcionada.

Metafile(String, IntPtr, Rectangle)

Inicializa una nueva instancia de la clase Metafile con el nombre de archivo especificado, un identificador de Windows para un contexto de dispositivo y una estructura Rectangle que representa el rectángulo que enlaza el nuevo 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 para un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que enlaza la nueva 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 para un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que enlaza la nueva 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 Metafile con el nombre de archivo especificado, un identificador de Windows para un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que enlaza la nueva Metafiley 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 Metafile con el nombre de archivo especificado, un identificador de Windows para un contexto de dispositivo, una estructura RectangleF que representa el rectángulo que enlaza la nueva Metafiley la unidad de medida proporcionada.

Metafile(String, IntPtr, RectangleF)

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

Metafile(String, IntPtr)

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

Metafile(String)

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

Propiedades

Flags

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

(Heredado de Image)
FrameDimensionsList

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

(Heredado de Image)
Height

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

(Heredado de Image)
HorizontalResolution

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

(Heredado de Image)
Palette

Obtiene o establece la paleta de colores usada para este 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 este Image.

(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 Image.

(Heredado de Image)
RawFormat

Obtiene el formato de archivo de este Image.

(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 Image.

(Heredado de Image)
Width

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

(Heredado de Image)

Métodos

Clone()

Crea una copia exacta de este Image.

(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 usados por el 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 función hash predeterminada.

(Heredado de Object)
GetHenhmetafile()

Devuelve un identificador de Windows a un Metafilemejorado.

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

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Devuelve el MetafileHeader asociado al Metafileespecificado.

GetMetafileHeader(IntPtr)

Devuelve el MetafileHeader asociado al Metafileespecificado.

GetMetafileHeader(Stream)

Devuelve el MetafileHeader asociado al Metafileespecificado.

GetMetafileHeader(String)

Devuelve el MetafileHeader asociado al Metafileespecificado.

GetPropertyItem(Int32)

Obtiene el elemento de propiedad especificado de este Image.

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

Devuelve una miniatura de este 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 Objectactual.

(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 este 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 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 este Image en el archivo especificado, con los parámetros especificados encoder y image-encoder.

(Heredado de Image)
Save(String, ImageFormat)

Guarda este Image en el archivo especificado en el formato especificado.

(Heredado de Image)
Save(String)

Guarda este 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 método Save. 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 método Save.

(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

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

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

(Heredado de Image)

Se aplica a