Condividi tramite


Metafile Classe

Definizione

Definisce un metafile grafico. Un metafile contiene record che descrivono una sequenza di operazioni grafiche che possono essere registrate (costruite) e riprodotte (visualizzate). Questa classe non è ereditabile.

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
Ereditarietà
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato come creare un Metafile e usare il metodo 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

Commenti

Quando si utilizza il metodo Save per salvare un'immagine grafica come file WMF (Windows Metafile Format) o EMF (Enhanced Metafile Format), il file risultante viene salvato come file PNG (Portable Network Graphics). Questo comportamento si verifica perché il componente GDI+ di .NET Framework non dispone di un codificatore che è possibile usare per salvare i file come file wmf o .emf.

Nota

In .NET 6 e versioni successive il pacchetto System.Drawing.Common, che include questo tipo, è supportato solo nei sistemi operativi Windows. L'uso di questo tipo nelle app multipiattaforma causa avvisi in fase di compilazione ed eccezioni in fase di esecuzione. Per altre informazioni, vedere System.Drawing.Common supportato solo in Windows.

Costruttori

Metafile(IntPtr, Boolean)

Inizializza una nuova istanza della classe Metafile dall'handle specificato.

Metafile(IntPtr, EmfType, String)

Inizializza una nuova istanza della classe Metafile dall'handle specificato a un contesto di dispositivo e un'enumerazione EmfType che specifica il formato del Metafile. È possibile specificare una stringa per denominare il file.

Metafile(IntPtr, EmfType)

Inizializza una nuova istanza della classe Metafile dall'handle specificato a un contesto di dispositivo e un'enumerazione EmfType che specifica il formato del Metafile.

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

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato che utilizza l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile. È possibile specificare una stringa per denominare il file.

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato che utilizza l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile.

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato che utilizza l'unità di misura fornita.

Metafile(IntPtr, Rectangle)

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato.

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

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato che utilizza l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile. È possibile specificare una stringa per denominare il file.

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato che utilizza l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile.

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato che utilizza l'unità di misura fornita.

Metafile(IntPtr, RectangleF)

Inizializza una nuova istanza della classe Metafile dal contesto di dispositivo specificato, delimitata dal rettangolo specificato.

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

Inizializza una nuova istanza della classe Metafile dall'handle specificato e un WmfPlaceableFileHeader. Inoltre, il parametro deleteWmf può essere usato per eliminare l'handle quando il metafile viene eliminato.

Metafile(IntPtr, WmfPlaceableFileHeader)

Inizializza una nuova istanza della classe Metafile dall'handle specificato e un WmfPlaceableFileHeader.

Metafile(Stream, IntPtr, EmfType, String)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo e un'enumerazione EmfType che specifica il formato del Metafile. Inoltre, è possibile aggiungere una stringa contenente un nome descrittivo per il nuovo Metafile.

Metafile(Stream, IntPtr, EmfType)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo e un'enumerazione EmfType che specifica il formato del Metafile.

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

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo, una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile. È possibile aggiungere una stringa contenente un nome descrittivo per il nuovo Metafile.

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

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo, una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile.

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo, una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafilee l'unità di misura fornita.

Metafile(Stream, IntPtr, Rectangle)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo e una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafile.

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

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo, una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile. È possibile aggiungere una stringa contenente un nome descrittivo per il nuovo Metafile.

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

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo, una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile.

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo, una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafilee l'unità di misura fornita.

Metafile(Stream, IntPtr, RectangleF)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle di Windows a un contesto di dispositivo e una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafile.

Metafile(Stream, IntPtr)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato.

Metafile(Stream)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato.

Metafile(String, IntPtr, EmfType, String)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo e un'enumerazione EmfType che specifica il formato del Metafile. È anche possibile aggiungere una stringa descrittiva.

Metafile(String, IntPtr, EmfType)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo e un'enumerazione EmfType che specifica il formato del Metafile.

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

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile. È anche possibile aggiungere una stringa descrittiva.

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

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile.

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

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafilee l'unità di misura fornita. È anche possibile aggiungere una stringa descrittiva.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafilee l'unità di misura fornita.

Metafile(String, IntPtr, Rectangle)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo e una struttura Rectangle che rappresenta il rettangolo che delimita il nuovo Metafile.

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

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile. È anche possibile aggiungere una stringa descrittiva.

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

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafile, l'unità di misura fornita e un'enumerazione EmfType che specifica il formato del Metafile.

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

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafilee l'unità di misura fornita. È anche possibile aggiungere una stringa descrittiva.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo, una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafilee l'unità di misura fornita.

Metafile(String, IntPtr, RectangleF)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle di Windows in un contesto di dispositivo e una struttura RectangleF che rappresenta il rettangolo che delimita il nuovo Metafile.

Metafile(String, IntPtr)

Inizializza una nuova istanza della classe Metafile con il nome file specificato.

Metafile(String)

Inizializza una nuova istanza della classe Metafile dal nome file specificato.

Proprietà

Flags

Ottiene i flag di attributo per i dati pixel di questo Image.

(Ereditato da Image)
FrameDimensionsList

Ottiene una matrice di GUID che rappresentano le dimensioni dei fotogrammi all'interno di questo Image.

(Ereditato da Image)
Height

Ottiene l'altezza, in pixel, di questa Image.

(Ereditato da Image)
HorizontalResolution

Ottiene la risoluzione orizzontale, espressa in pixel per pollice, di questo Image.

(Ereditato da Image)
Palette

Ottiene o imposta la tavolozza dei colori utilizzata per questo Image.

(Ereditato da Image)
PhysicalDimension

Ottiene la larghezza e l'altezza dell'immagine.

(Ereditato da Image)
PixelFormat

Ottiene il formato pixel per questo Image.

(Ereditato da Image)
PropertyIdList

Ottiene gli ID degli elementi della proprietà archiviati in questo Image.

(Ereditato da Image)
PropertyItems

Ottiene tutti gli elementi della proprietà (parti di metadati) archiviati in questo Image.

(Ereditato da Image)
RawFormat

Ottiene il formato di file di questo Image.

(Ereditato da Image)
Size

Ottiene la larghezza e l'altezza, in pixel, di questa immagine.

(Ereditato da Image)
Tag

Ottiene o imposta un oggetto che fornisce dati aggiuntivi sull'immagine.

(Ereditato da Image)
VerticalResolution

Ottiene la risoluzione verticale, espressa in pixel per pollice, di questo Image.

(Ereditato da Image)
Width

Ottiene la larghezza, in pixel, di questo Image.

(Ereditato da Image)

Metodi

Clone()

Crea una copia esatta di questo Image.

(Ereditato da Image)
CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da questo Image.

(Ereditato da Image)
Dispose(Boolean)

Rilascia le risorse non gestite usate dal Image e, facoltativamente, rilascia le risorse gestite.

(Ereditato da Image)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBounds(GraphicsUnit)

Ottiene i limiti dell'immagine nell'unità specificata.

(Ereditato da Image)
GetEncoderParameterList(Guid)

Restituisce informazioni sui parametri supportati dal codificatore di immagini specificato.

(Ereditato da Image)
GetFrameCount(FrameDimension)

Restituisce il numero di fotogrammi della dimensione specificata.

(Ereditato da Image)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetHenhmetafile()

Restituisce un handle di Windows a un Metafileavanzato.

GetLifetimeService()
Obsoleti.

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetMetafileHeader()

Restituisce il MetafileHeader associato a questo Metafile.

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Restituisce il MetafileHeader associato al Metafilespecificato.

GetMetafileHeader(IntPtr)

Restituisce il MetafileHeader associato al Metafilespecificato.

GetMetafileHeader(Stream)

Restituisce il MetafileHeader associato al Metafilespecificato.

GetMetafileHeader(String)

Restituisce il MetafileHeader associato al Metafilespecificato.

GetPropertyItem(Int32)

Ottiene l'elemento della proprietà specificato da questo Image.

(Ereditato da Image)
GetThumbnailImage(Int32, Int32, Image+GetThumbnailImageAbort, IntPtr)

Restituisce un'anteprima per questo Image.

(Ereditato da Image)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
PlayRecord(EmfPlusRecordType, Int32, Int32, Byte[])

Riproduce un singolo record metafile.

RemovePropertyItem(Int32)

Rimuove l'elemento della proprietà specificato da questo Image.

(Ereditato da Image)
RotateFlip(RotateFlipType)

Ruota, capovolge o ruota e capovolge il Image.

(Ereditato da Image)
Save(Stream, ImageCodecInfo, EncoderParameters)

Salva questa immagine nel flusso specificato, con i parametri del codificatore e del codificatore di immagini specificati.

(Ereditato da Image)
Save(Stream, ImageFormat)

Salva questa immagine nel flusso specificato nel formato specificato.

(Ereditato da Image)
Save(String, ImageCodecInfo, EncoderParameters)

Salva questo Image nel file specificato, con i parametri del codificatore e del codificatore di immagini specificati.

(Ereditato da Image)
Save(String, ImageFormat)

Salva questo Image nel file specificato nel formato specificato.

(Ereditato da Image)
Save(String)

Salva questo Image nel file o nel flusso specificato.

(Ereditato da Image)
SaveAdd(EncoderParameters)

Aggiunge un frame al file o al flusso specificato in una chiamata precedente al metodo Save. Usare questo metodo per salvare i fotogrammi selezionati da un'immagine a più fotogrammi in un'altra immagine con più fotogrammi.

(Ereditato da Image)
SaveAdd(Image, EncoderParameters)

Aggiunge un frame al file o al flusso specificato in una chiamata precedente al metodo Save.

(Ereditato da Image)
SelectActiveFrame(FrameDimension, Int32)

Seleziona il frame specificato dalla dimensione e dall'indice.

(Ereditato da Image)
SetPropertyItem(PropertyItem)

Archivia un elemento della proprietà (parte di metadati) in questo Image.

(Ereditato da Image)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Popola un SerializationInfo con i dati necessari per serializzare l'oggetto di destinazione.

(Ereditato da Image)

Si applica a