Condividi tramite


Metafile Classe

Definizione

Definisce un metafile grafico. In un metafile sono contenuti record che descrivono una sequenza di operazioni grafiche che possono essere registrate (create) e riprodotte (visualizzate). La classe non è ereditabile.

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

Esempio

Nell'esempio di codice seguente viene illustrato come creare un Metafile oggetto e usare il PlayRecord metodo .


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 usa il Save metodo per salvare un'immagine grafica come file WMF (Windows Metafile Format) o Enhanced Metafile Format (EMF), 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 con estensione 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 di runtime. 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)

Inizializza una nuova istanza della classe Metafile dall'handle specificato per un contesto di periferica e un'enumerazione EmfType che specifica il formato dell'oggetto Metafile.

Metafile(IntPtr, EmfType, String)

Inizializza una nuova istanza della classe Metafile dall'handle specificato per un contesto di periferica e un'enumerazione EmfType che specifica il formato dell'oggetto Metafile. È possibile immettere una stringa per assegnare il nome del file.

Metafile(IntPtr, Rectangle)

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitata dal rettangolo specificato.

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitata dal rettangolo specificato in cui vengono utilizzate le unità di misura fornite.

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitato dal rettangolo specificato in cui viene utilizzata l'unità di misura fornita, nonché da un'enumerazione EmfType che specifica il formato della classe Metafile.

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

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitato dal rettangolo specificato in cui viene utilizzata l'unità di misura fornita, nonché da un'enumerazione EmfType che specifica il formato della classe Metafile. È possibile immettere una stringa per assegnare il nome del file.

Metafile(IntPtr, RectangleF)

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitata dal rettangolo specificato.

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitata dal rettangolo specificato in cui vengono utilizzate le unità di misura fornite.

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitato dal rettangolo specificato in cui viene utilizzata l'unità di misura fornita, nonché da un'enumerazione EmfType che specifica il formato della classe Metafile.

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

Inizializza una nuova istanza della classe Metafile da un determinato contesto di periferica, delimitato dal rettangolo specificato in cui viene utilizzata l'unità di misura fornita, nonché da un'enumerazione EmfType che specifica il formato della classe Metafile. È possibile immettere una stringa per assegnare il nome del file.

Metafile(IntPtr, WmfPlaceableFileHeader)

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

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

Inizializza una nuova istanza della classe Metafile dall'handle specificato e una classe WmfPlaceableFileHeader. È inoltre possibile utilizzare il parametro deleteWmf per eliminare l'handle quando viene eliminato il metafile.

Metafile(Stream)

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

Metafile(Stream, IntPtr)

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

Metafile(Stream, IntPtr, EmfType)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle Windows per un contesto di periferica e un'enumerazione EmfType che specifica il formato dell'oggetto Metafile.

Metafile(Stream, IntPtr, EmfType, String)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle Windows per un contesto di periferica e un'enumerazione EmfType che specifica il formato dell'oggetto Metafile. È inoltre possibile aggiungere una stringa che contiene un nome descrittivo per il nuovo oggetto Metafile.

Metafile(Stream, IntPtr, Rectangle)

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

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

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

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

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

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

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

Metafile(Stream, IntPtr, RectangleF)

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

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

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

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

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

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

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

Metafile(String)

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

Metafile(String, IntPtr)

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

Metafile(String, IntPtr, EmfType)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle Windows per un contesto di periferica e un'enumerazione EmfType che specifica il formato dell'oggetto Metafile.

Metafile(String, IntPtr, EmfType, String)

Inizializza una nuova istanza della classe Metafile dal flusso di dati specificato, un handle Windows per un contesto di periferica e un'enumerazione EmfType che specifica il formato dell'oggetto Metafile. È anche possibile aggiungere una stringa descrittiva.

Metafile(String, IntPtr, Rectangle)

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

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle Windows per un contesto di periferica, una struttura Rectangle che rappresenta il rettangolo che delimita la nuova classe Metafile e l'unità di misura fornita.

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

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

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

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

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

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

Metafile(String, IntPtr, RectangleF)

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

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

Inizializza una nuova istanza della classe Metafile con il nome file specificato, un handle Windows per un contesto di periferica, una struttura RectangleF che rappresenta il rettangolo che delimita la nuova classe Metafile e l'unità di misura fornita.

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

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

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

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

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

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

Proprietà

Flags

Ottiene i flag di attributi per i dati pixel di questo oggetto Image.

(Ereditato da Image)
FrameDimensionsList

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

(Ereditato da Image)
Height

Ottiene l'altezza in pixel di questo oggetto Image.

(Ereditato da Image)
HorizontalResolution

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

(Ereditato da Image)
Palette

Ottiene o imposta la tavolozza dei colori usata per questo oggetto Image.

(Ereditato da Image)
PhysicalDimension

Ottiene la larghezza e l'altezza di questa immagine.

(Ereditato da Image)
PixelFormat

Ottiene il formato pixel per questo oggetto Image.

(Ereditato da Image)
PropertyIdList

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

(Ereditato da Image)
PropertyItems

Ottiene tutti gli elementi di proprietà (porzioni di metadati) archiviati in questo oggetto Image.

(Ereditato da Image)
RawFormat

Ottiene il formato di file dell'oggetto Image.

(Ereditato da Image)
Size

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

(Ereditato da Image)
Tag

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

(Ereditato da Image)
VerticalResolution

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

(Ereditato da Image)
Width

Ottiene la larghezza in pixel di questo oggetto Image.

(Ereditato da Image)

Metodi

Clone()

Crea una copia esatta di questo Image.

(Ereditato da Image)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da questa classe Image.

(Ereditato da Image)
Dispose(Boolean)

Rilascia le risorse non gestite usate da Image e, facoltativamente, 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à di misura specificata.

(Ereditato da Image)
GetEncoderParameterList(Guid)

Restituisce informazioni sui parametri supportati dal codificatore di immagini specificato.

(Ereditato da Image)
GetFrameCount(FrameDimension)

Restituisce il numero dei fotogrammi della dimensione specificata.

(Ereditato da Image)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetHenhmetafile()

Restituisce un handle Windows per una classe Metafile avanzata.

GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetMetafileHeader()

Restituisce l'oggetto MetafileHeader associato a Metafile.

GetMetafileHeader(IntPtr)

Restituisce l'oggetto MetafileHeader associato all'oggetto Metafile specificato.

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Restituisce l'oggetto MetafileHeader associato all'oggetto Metafile specificato.

GetMetafileHeader(Stream)

Restituisce l'oggetto MetafileHeader associato all'oggetto Metafile specificato.

GetMetafileHeader(String)

Restituisce l'oggetto MetafileHeader associato all'oggetto Metafile specificato.

GetPropertyItem(Int32)

Ottiene l'elemento di proprietà specificato da questo oggetto Image.

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

Restituisce un'anteprima di questo oggetto Image.

(Ereditato da Image)
GetType()

Ottiene l'oggetto 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 dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

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

Esegue un singolo record del metafile.

RemovePropertyItem(Int32)

Rimuove da questo oggetto Image l'elemento di proprietà specificato.

(Ereditato da Image)
RotateFlip(RotateFlipType)

Ruota, capovolge o ruota e capovolge Image.

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

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

(Ereditato da Image)
Save(Stream, ImageFormat)

Salva questa immagine nel flusso e nel formato specificati.

(Ereditato da Image)
Save(String)

Salva questo oggetto Image nel file o flusso specificato.

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

Salva l'immagine Image nel file specificato, con i parametri di codificatore specificato e di codificatore di immagini.

(Ereditato da Image)
Save(String, ImageFormat)

Salva questo oggetto Image nel file e nel formato specificati.

(Ereditato da Image)
SaveAdd(EncoderParameters)

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

(Ereditato da Image)
SaveAdd(Image, EncoderParameters)

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

(Ereditato da Image)
SelectActiveFrame(FrameDimension, Int32)

Seleziona il fotogramma specificato in base alla dimensione e all'indice.

(Ereditato da Image)
SetPropertyItem(PropertyItem)

Archivia un elemento di proprietà (porzione di metadati) in questo oggetto 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 oggetto SerializationInfo con i dati necessari per serializzare l'oggetto di destinazione.

(Ereditato da Image)

Si applica a