Metafile Classe

Definição

Define um metafile gráfico. Um metafile contém registros que descrevem uma sequência de operações gráficas que podem ser gravadas (construídas) e reproduzidas (exibidas). Essa classe não é herdável.

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

Exemplos

O exemplo de código a seguir demonstra como criar e Metafile 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 método Save para salvar uma imagem gráfica como um arquivo WMF (Formato de Metafile Windows) ou EMF (Formato de Metafile Avançado), 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.

Note

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

Nome Description
Metafile(IntPtr, Boolean)

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

Metafile(IntPtr, EmfType, String)

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

Metafile(IntPtr, EmfType)

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

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

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

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

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

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

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

Metafile(IntPtr, Rectangle)

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

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

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

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

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

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

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

Metafile(IntPtr, RectangleF)

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

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

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

Metafile(IntPtr, WmfPlaceableFileHeader)

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

Metafile(Stream, IntPtr, EmfType, String)

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

Metafile(Stream, IntPtr, EmfType)

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

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

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

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

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

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

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

Metafile(Stream, IntPtr, Rectangle)

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

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

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

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

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

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

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

Metafile(Stream, IntPtr, RectangleF)

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

Metafile(Stream, IntPtr)

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

Metafile(Stream)

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

Metafile(String, IntPtr, EmfType, String)

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

Metafile(String, IntPtr, EmfType)

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

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

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

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

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

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

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

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

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

Metafile(String, IntPtr, Rectangle)

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

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

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

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

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

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

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

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

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

Metafile(String, IntPtr, RectangleF)

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

Metafile(String, IntPtr)

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

Metafile(String)

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

Propriedades

Nome Description
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 dentro deste 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, deste Image.

(Herdado de Image)
Palette

Obtém ou define a paleta de cores usada para isso 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 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, deste Image.

(Herdado de Image)
Width

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

(Herdado de Image)

Métodos

Nome Description
Clone()

Cria uma cópia exata disso 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 isso 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 compatíveis com o 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 hash predefinida.

(Herdado de Object)
GetHenhmetafile()

Retorna um identificador de Windows para um Metafile aprimorado.

GetLifetimeService()

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

(Herdado de MarshalByRefObject)
GetMetafileHeader()

Retorna o MetafileHeader associado a este Metafile.

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Retorna o MetafileHeader associado ao especificado Metafile.

GetMetafileHeader(IntPtr)

Retorna o MetafileHeader associado ao especificado Metafile.

GetMetafileHeader(Stream)

Retorna o MetafileHeader associado ao especificado Metafile.

GetMetafileHeader(String)

Retorna o MetafileHeader associado ao especificado Metafile.

GetPropertyItem(Int32)

Obtém o item de propriedade especificado a partir deste Image.

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

Retorna uma miniatura para isso Image.

(Herdado de Image)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()

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

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

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

Reproduz um registro de metafile individual.

RemovePropertyItem(Int32)

Remove o item de propriedade especificado deste 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 e codificador de imagem especificados.

(Herdado de Image)
Save(Stream, ImageFormat)

Salva essa imagem no fluxo especificado no formato especificado.

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

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

(Herdado de Image)
Save(String, ImageFormat)

Salva isso Image no arquivo especificado no formato especificado.

(Herdado de Image)
Save(String)

Salva isso Image no arquivo ou fluxo especificado.

(Herdado de Image)
SaveAdd(EncoderParameters)

Adiciona um quadro ao arquivo ou fluxo especificado em uma chamada anterior ao Save método. 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 ao arquivo ou fluxo especificado em uma chamada anterior ao Save método.

(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 dos 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

Nome Description
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

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

(Herdado de Image)

Aplica-se a