Metafile Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 |
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) |