Compartilhar via


Metafile Classe

Definição

Define um metarquivo gráfico. Um metarquivo contém registros que descrevem uma sequência de operações de gráficos que pode ser registrada (construída) e reproduzida (exibida). Essa classe não é herdável.

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
Herança
Atributos

Exemplos

O exemplo de código a seguir demonstra como criar um Metafile e usar o 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

Comentários

Quando você usa o Save método para salvar uma imagem gráfica como um arquivo WMF (Windows Metafile Format) ou EMF (Enhanced Metafile Format), o arquivo resultante é salvo como um arquivo PNG (Portable Network Graphics). Esse comportamento ocorre porque o componente GDI+ do .NET Framework não tem um codificador que você pode usar para salvar arquivos como arquivos .wmf ou .emf.

Observação

No .NET 6 e versões posteriores, o pacote System.Drawing.Common, que inclui esse tipo, só tem suporte em sistemas operacionais Windows. O uso desse tipo em aplicativos multiplataforma causa avisos de tempo de compilação e exceções em tempo de execução. Para obter mais informações, consulte System.Drawing.Common com suporte apenas no Windows.

Construtores

Metafile(IntPtr, Boolean)

Inicializa uma nova instância da classe Metafile do identificador especificado.

Metafile(IntPtr, EmfType)

Inicializa uma nova instância da classe Metafile do identificador especificado para um contexto de dispositivo e uma enumeração EmfType que especifica o formato de Metafile.

Metafile(IntPtr, EmfType, String)

Inicializa uma nova instância da classe Metafile do identificador especificado para um contexto de dispositivo e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres pode ser fornecida para nomear o arquivo.

Metafile(IntPtr, Rectangle)

Inicializa uma nova instância da classe Metafile do contexto do dispositivo especificado, limitado pelo retângulo especificado.

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

Inicializa uma nova instância da classe Metafile do contexto de dispositivo especificado, limitado pelo retângulo especificado que usa a unidade de medida informada.

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Inicializa uma nova instância da classe Metafile com base no contexto do dispositivo especificado, limitado pelo retângulo especificado que usa a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile.

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

Inicializa uma nova instância da classe Metafile com base no contexto do dispositivo especificado, limitado pelo retângulo especificado que usa a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres pode ser fornecida para nomear o arquivo.

Metafile(IntPtr, RectangleF)

Inicializa uma nova instância da classe Metafile do contexto do dispositivo especificado, limitado pelo retângulo especificado.

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

Inicializa uma nova instância da classe Metafile do contexto de dispositivo especificado, limitado pelo retângulo especificado que usa a unidade de medida informada.

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Inicializa uma nova instância da classe Metafile com base no contexto do dispositivo especificado, limitado pelo retângulo especificado que usa a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile.

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

Inicializa uma nova instância da classe Metafile com base no contexto do dispositivo especificado, limitado pelo retângulo especificado que usa a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres pode ser fornecida para nomear o arquivo.

Metafile(IntPtr, WmfPlaceableFileHeader)

Inicializa uma nova instância da classe Metafile do identificador especificado e um WmfPlaceableFileHeader.

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

Inicializa uma nova instância da classe Metafile do identificador especificado e um WmfPlaceableFileHeader. Além disso, o parâmetro deleteWmf pode ser usado para excluir o identificador quando o metarquivo for excluído.

Metafile(Stream)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado.

Metafile(Stream, IntPtr)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado.

Metafile(Stream, IntPtr, EmfType)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows em um contexto de dispositivo e uma enumeração EmfType que especifica o formato de Metafile.

Metafile(Stream, IntPtr, EmfType, String)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows em um contexto de dispositivo e uma enumeração EmfType que especifica o formato de Metafile. Além disso, uma cadeia de caracteres que contém um nome descritivo para o novo Metafile pode ser adicionada.

Metafile(Stream, IntPtr, Rectangle)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo e uma estrutura Rectangle que representa o retângulo que limita o novo Metafile.

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura Rectangle que representa o retângulo que limita o novo Metafile e a unidade de medida informada.

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

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura Rectangle que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile.

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

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura Rectangle que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres que contém um nome descritivo para o novo Metafile podem ser adicionada.

Metafile(Stream, IntPtr, RectangleF)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo e uma estrutura RectangleF que representa o retângulo que limita o novo Metafile.

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura RectangleF que representa o retângulo que limita o novo Metafile e a unidade de medida informada.

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

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura RectangleF que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile.

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

Inicializa uma nova instância da classe Metafile do fluxo de dados especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura RectangleF que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres que contém um nome descritivo para o novo Metafile podem ser adicionada.

Metafile(String)

Inicializa uma nova instância da classe Metafile do nome do arquivo especificado.

Metafile(String, IntPtr)

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado.

Metafile(String, IntPtr, EmfType)

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows em um contexto de dispositivo e uma enumeração EmfType que especifica o formato de Metafile.

Metafile(String, IntPtr, EmfType, String)

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows em um contexto de dispositivo e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres descritiva pode ser adicionada também.

Metafile(String, IntPtr, Rectangle)

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows para um contexto de dispositivo e uma estrutura Rectangle que representa o retângulo que limita o novo Metafile.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows em um contexto de dispositivo, uma estrutura Rectangle que representa o retângulo que limita o novo Metafile e a unidade de medida informada.

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

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura Rectangle que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile.

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

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura Rectangle que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres descritiva também pode ser adicionada.

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

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows em um contexto de dispositivo, uma estrutura Rectangle que representa o retângulo que limita o novo Metafile e a unidade de medida informada. Uma cadeia de caracteres descritiva também pode ser adicionada.

Metafile(String, IntPtr, RectangleF)

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows para um contexto de dispositivo e uma estrutura RectangleF que representa o retângulo que limita o novo Metafile.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows em um contexto de dispositivo, uma estrutura RectangleF que representa o retângulo que limita o novo Metafile e a unidade de medida informada.

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

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura RectangleF que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile.

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

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows para um contexto de dispositivo, uma estrutura RectangleF que representa o retângulo que limita o novo Metafile, a unidade de medida fornecida e uma enumeração EmfType que especifica o formato de Metafile. Uma cadeia de caracteres descritiva também pode ser adicionada.

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

Inicializa uma nova instância da classe Metafile com o nome de arquivo especificado, um identificador do Windows em um contexto de dispositivo, uma estrutura RectangleF que representa o retângulo que limita o novo Metafile e a unidade de medida informada. Uma cadeia de caracteres descritiva também pode ser adicionada.

Propriedades

Flags

Obtém sinalizadores de atributo para os dados de pixel deste Image.

(Herdado de Image)
FrameDimensionsList

Obtém uma matriz de GUIDs que representam as dimensões dos quadros neste Image.

(Herdado de Image)
Height

Obtém a altura, em pixels, deste Image.

(Herdado de Image)
HorizontalResolution

Obtém a resolução horizontal, em pixels por polegada, desta Image.

(Herdado de Image)
Palette

Obtém ou define a paleta de cores usada para este Image.

(Herdado de Image)
PhysicalDimension

Obtém a largura e a altura dessa imagem.

(Herdado de Image)
PixelFormat

Obtém o formato de pixel para este Image.

(Herdado de Image)
PropertyIdList

Obtém as IDs dos itens de propriedade armazenados neste Image.

(Herdado de Image)
PropertyItems

Obtém todos os itens de propriedade (partes de metadados) armazenados neste Image.

(Herdado de Image)
RawFormat

Obtém o formato de arquivo deste Image.

(Herdado de Image)
Size

Obtém a largura e a altura, em pixels, dessa imagem.

(Herdado de Image)
Tag

Obtém ou define um objeto que fornece dados adicionais sobre a imagem.

(Herdado de Image)
VerticalResolution

Obtém a resolução vertical, em pixels por polegada, dessa Image.

(Herdado de Image)
Width

Obtém a largura, em pixels, desse Image.

(Herdado de Image)

Métodos

Clone()

Cria uma cópia exata deste Image.

(Herdado de Image)
CreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
Dispose()

Libera todos os recursos usados por este Image.

(Herdado de Image)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo Image e opcionalmente libera os recursos gerenciados.

(Herdado de Image)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetBounds(GraphicsUnit)

Obtém os limites da imagem na unidade especificada.

(Herdado de Image)
GetEncoderParameterList(Guid)

Retorna informações sobre os parâmetros com suporte do codificador de imagem especificado.

(Herdado de Image)
GetFrameCount(FrameDimension)

Retorna o número de quadros da dimensão especificada.

(Herdado de Image)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetHenhmetafile()

Retorna um identificador do Windows para um Metafile avançado.

GetLifetimeService()
Obsoleto.

Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância.

(Herdado de MarshalByRefObject)
GetMetafileHeader()

Retorna o MetafileHeader associado a este Metafile.

GetMetafileHeader(IntPtr)

Retorna o MetafileHeader associado ao Metafile especificado.

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Retorna o MetafileHeader associado ao Metafile especificado.

GetMetafileHeader(Stream)

Retorna o MetafileHeader associado ao Metafile especificado.

GetMetafileHeader(String)

Retorna o MetafileHeader associado ao Metafile especificado.

GetPropertyItem(Int32)

Obtém o item de propriedade especificado deste Image.

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

Retorna uma miniatura para este Image.

(Herdado de Image)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()
Obsoleto.

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.

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

Executa um registro de metarquivo individual.

RemovePropertyItem(Int32)

Remove o item de propriedade especificado desta Image.

(Herdado de Image)
RotateFlip(RotateFlipType)

Gira, inverte ou gira e inverte o Image.

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

Salva essa imagem no fluxo especificado, com os parâmetros de codificador de imagens e codificador especificados.

(Herdado de Image)
Save(Stream, ImageFormat)

Salva essa imagem no fluxo especificado no formato especificado.

(Herdado de Image)
Save(String)

Salva este Image no arquivo ou fluxo especificado.

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

Salva esse Image no arquivo especificado, com os parâmetros de codificador de imagens e codificador especificados.

(Herdado de Image)
Save(String, ImageFormat)

Salva essa Image no arquivo especificado no formato especificado.

(Herdado de Image)
SaveAdd(EncoderParameters)

Adiciona um quadro para o arquivo ou fluxo especificado em uma chamada anterior para o método Save. Use esse método para salvar quadros selecionados de uma imagem de vários quadros em outra imagem de vários quadros.

(Herdado de Image)
SaveAdd(Image, EncoderParameters)

Adiciona um quadro para o arquivo ou fluxo especificado em uma chamada anterior para o método Save.

(Herdado de Image)
SelectActiveFrame(FrameDimension, Int32)

Seleciona o quadro especificado pela dimensão e pelo índice.

(Herdado de Image)
SetPropertyItem(PropertyItem)

Armazena um item de propriedade (parte de metadados) neste Image.

(Herdado de Image)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Popula um SerializationInfo com os dados necessários para serializar o objeto de destino.

(Herdado de Image)

Aplica-se a