Metafile Klasse

Definition

Definiert eine Grafikmetadatei. Eine Metadatei enthält Datensätze, die eine Abfolge von Grafikvorgängen beschreiben, die aufgezeichnet (konstruiert) und wiedergegeben werden können (angezeigt). Diese Klasse ist nicht vererbbar.

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
Vererbung
Attribute

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie eine Metafile erstellen und die PlayRecord-Methode verwenden.


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

Hinweise

Wenn Sie die Save-Methode verwenden, um ein Grafikbild stattdessen als WMF-Datei (Windows Metafile Format) oder EMF-Datei (Enhanced Metafile Format) zu speichern, wird die resultierende Datei stattdessen als PNG-Datei (Portable Network Graphics) gespeichert. Dieses Verhalten tritt auf, da die GDI+-Komponente von .NET Framework keinen Encoder aufweist, den Sie zum Speichern von Dateien als WMF- oder .emf-Dateien verwenden können.

Anmerkung

In .NET 6 und höheren Versionen wird das System.Drawing.Common-Paket, das diesen Typ enthält, nur unter Windows-Betriebssystemen unterstützt. Die Verwendung dieses Typs in plattformübergreifenden Apps führt zu Kompilierungszeitwarnungen und Laufzeit-Ausnahmen. Weitere Informationen finden Sie unter System.Drawing.Common nur unter Windowsunterstützt.

Konstruktoren

Metafile(IntPtr, Boolean)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Handle.

Metafile(IntPtr, EmfType, String)

Initialisiert eine neue Instanz der Metafile Klasse vom angegebenen Handle in einen Gerätekontext und eine EmfType Enumeration, die das Format der Metafileangibt. Eine Zeichenfolge kann angegeben werden, um die Datei zu benennen.

Metafile(IntPtr, EmfType)

Initialisiert eine neue Instanz der Metafile Klasse vom angegebenen Handle in einen Gerätekontext und eine EmfType Enumeration, die das Format der Metafileangibt.

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

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck gebunden ist, das die angegebene Maßeinheit verwendet, und eine EmfType Enumeration, die das Format der Metafileangibt. Eine Zeichenfolge kann zum Benennen der Datei bereitgestellt werden.

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck gebunden ist, das die angegebene Maßeinheit verwendet, und eine EmfType Enumeration, die das Format der Metafileangibt.

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck gebunden ist, das die angegebene Maßeinheit verwendet.

Metafile(IntPtr, Rectangle)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck begrenzt ist.

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

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck gebunden ist, das die angegebene Maßeinheit verwendet, und eine EmfType Enumeration, die das Format der Metafileangibt. Eine Zeichenfolge kann zum Benennen der Datei bereitgestellt werden.

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck gebunden ist, das die angegebene Maßeinheit verwendet, und eine EmfType Enumeration, die das Format der Metafileangibt.

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck gebunden ist, das die angegebene Maßeinheit verwendet.

Metafile(IntPtr, RectangleF)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Gerätekontext, die durch das angegebene Rechteck begrenzt ist.

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Handle und einem WmfPlaceableFileHeader. Außerdem kann der deleteWmf-Parameter verwendet werden, um das Handle zu löschen, wenn die Metadatei gelöscht wird.

Metafile(IntPtr, WmfPlaceableFileHeader)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Handle und einem WmfPlaceableFileHeader.

Metafile(Stream, IntPtr, EmfType, String)

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle für einen Gerätekontext und eine EmfType Enumeration, die das Format der Metafileangibt. Außerdem kann eine Zeichenfolge, die einen beschreibenden Namen für die neue Metafile enthält, hinzugefügt werden.

Metafile(Stream, IntPtr, EmfType)

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle für einen Gerätekontext und eine EmfType Enumeration, die das Format der Metafileangibt.

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

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext, eine Rectangle Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt. Eine Zeichenfolge, die einen beschreibenden Namen für die neue Metafile enthält, kann hinzugefügt werden.

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

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext, eine Rectangle Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt.

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext, eine Rectangle Struktur, die das Rechteck darstellt, das die neue Metafileund die angegebene Maßeinheit begrenzt.

Metafile(Stream, IntPtr, Rectangle)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext und eine Rectangle Struktur, die das Rechteck darstellt, das die neue Metafilebegrenzt.

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

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext, eine RectangleF Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt. Eine Zeichenfolge, die einen beschreibenden Namen für die neue Metafile enthält, kann hinzugefügt werden.

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

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext, eine RectangleF Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt.

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

Initialisiert eine neue Instanz der Metafile-Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext, eine RectangleF Struktur, die das Rechteck darstellt, das die neue Metafileund die angegebene Maßeinheit begrenzt.

Metafile(Stream, IntPtr, RectangleF)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Datenstrom, ein Windows-Handle zu einem Gerätekontext und eine RectangleF Struktur, die das Rechteck darstellt, das die neue Metafilebegrenzt.

Metafile(Stream, IntPtr)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Datenstrom.

Metafile(Stream)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Datenstrom.

Metafile(String, IntPtr, EmfType, String)

Initialisiert eine neue Instanz der Metafile Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext und einer EmfType Enumeration, die das Format der Metafileangibt. Eine beschreibende Zeichenfolge kann ebenfalls hinzugefügt werden.

Metafile(String, IntPtr, EmfType)

Initialisiert eine neue Instanz der Metafile Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext und einer EmfType Enumeration, die das Format der Metafileangibt.

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

Initialisiert eine neue Instanz der Metafile Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext, einer Rectangle Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt. Eine beschreibende Zeichenfolge kann auch hinzugefügt werden.

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

Initialisiert eine neue Instanz der Metafile Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext, einer Rectangle Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt.

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

Initialisiert eine neue Instanz der Metafile-Klasse mit dem angegebenen Dateinamen, ein Windows-Handle für einen Gerätekontext, eine Rectangle Struktur, die das Rechteck darstellt, das die neue Metafileund die angegebene Maßeinheit begrenzt. Eine beschreibende Zeichenfolge kann auch hinzugefügt werden.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

Initialisiert eine neue Instanz der Metafile-Klasse mit dem angegebenen Dateinamen, ein Windows-Handle für einen Gerätekontext, eine Rectangle Struktur, die das Rechteck darstellt, das die neue Metafileund die angegebene Maßeinheit begrenzt.

Metafile(String, IntPtr, Rectangle)

Initialisiert eine neue Instanz der Metafile-Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext und einer Rectangle Struktur, die das Rechteck darstellt, das die neue Metafilebegrenzt.

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

Initialisiert eine neue Instanz der Metafile Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext, einer RectangleF Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt. Eine beschreibende Zeichenfolge kann auch hinzugefügt werden.

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

Initialisiert eine neue Instanz der Metafile Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext, einer RectangleF Struktur, die das Rechteck darstellt, das die neue Metafile, die angegebene Maßeinheit und eine EmfType Enumeration, die das Format der Metafileangibt.

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

Initialisiert eine neue Instanz der Metafile-Klasse mit dem angegebenen Dateinamen, ein Windows-Handle für einen Gerätekontext, eine RectangleF Struktur, die das Rechteck darstellt, das die neue Metafileund die angegebene Maßeinheit begrenzt. Eine beschreibende Zeichenfolge kann auch hinzugefügt werden.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

Initialisiert eine neue Instanz der Metafile-Klasse mit dem angegebenen Dateinamen, ein Windows-Handle für einen Gerätekontext, eine RectangleF Struktur, die das Rechteck darstellt, das die neue Metafileund die angegebene Maßeinheit begrenzt.

Metafile(String, IntPtr, RectangleF)

Initialisiert eine neue Instanz der Metafile-Klasse mit dem angegebenen Dateinamen, einem Windows-Handle für einen Gerätekontext und einer RectangleF Struktur, die das Rechteck darstellt, das die neue Metafilebegrenzt.

Metafile(String, IntPtr)

Initialisiert eine neue Instanz der Metafile Klasse mit dem angegebenen Dateinamen.

Metafile(String)

Initialisiert eine neue Instanz der Metafile Klasse aus dem angegebenen Dateinamen.

Eigenschaften

Flags

Ruft Attributkennzeichnungen für die Pixeldaten dieser Imageab.

(Geerbt von Image)
FrameDimensionsList

Ruft ein Array von GUIDs, die die Dimensionen von Frames innerhalb dieses Imagedarstellt.

(Geerbt von Image)
Height

Ruft die Höhe dieses Imagein Pixeln ab.

(Geerbt von Image)
HorizontalResolution

Ruft die horizontale Auflösung in Pixel pro Zoll dieses Imageab.

(Geerbt von Image)
Palette

Dient zum Abrufen oder Festlegen der Farbpalette, die für diese Imageverwendet wird.

(Geerbt von Image)
PhysicalDimension

Ruft die Breite und Höhe dieses Bilds ab.

(Geerbt von Image)
PixelFormat

Ruft das Pixelformat für diese Imageab.

(Geerbt von Image)
PropertyIdList

Ruft IDs der in diesem Imagegespeicherten Eigenschaftselemente ab.

(Geerbt von Image)
PropertyItems

Ruft alle In diesem Imagegespeicherten Eigenschaftselemente (Metadatenelemente) ab.

(Geerbt von Image)
RawFormat

Ruft das Dateiformat dieses Imageab.

(Geerbt von Image)
Size

Ruft die Breite und Höhe in Pixel dieses Bilds ab.

(Geerbt von Image)
Tag

Dient zum Abrufen oder Festlegen eines Objekts, das zusätzliche Daten zum Bild bereitstellt.

(Geerbt von Image)
VerticalResolution

Ruft die vertikale Auflösung in Pixel pro Zoll dieses Imageab.

(Geerbt von Image)
Width

Ruft die Breite dieses Imagein Pixeln ab.

(Geerbt von Image)

Methoden

Clone()

Erstellt eine genaue Kopie dieses Image.

(Geerbt von Image)
CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
Dispose()

Gibt alle von diesem Imageverwendeten Ressourcen frei.

(Geerbt von Image)
Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die vom Image verwendet werden, und gibt optional die verwalteten Ressourcen frei.

(Geerbt von Image)
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetBounds(GraphicsUnit)

Ruft die Grenzen des Bilds in der angegebenen Einheit ab.

(Geerbt von Image)
GetEncoderParameterList(Guid)

Gibt Informationen zu den Parametern zurück, die vom angegebenen Bildgeber unterstützt werden.

(Geerbt von Image)
GetFrameCount(FrameDimension)

Gibt die Anzahl der Frames der angegebenen Dimension zurück.

(Geerbt von Image)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetHenhmetafile()

Gibt ein Windows-Handle zu einem erweiterten Metafilezurück.

GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetMetafileHeader()

Gibt den MetafileHeader zurück, der diesem Metafilezugeordnet ist.

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

Gibt die dem angegebenen Metafilezugeordnete MetafileHeader zurück.

GetMetafileHeader(IntPtr)

Gibt die dem angegebenen Metafilezugeordnete MetafileHeader zurück.

GetMetafileHeader(Stream)

Gibt die dem angegebenen Metafilezugeordnete MetafileHeader zurück.

GetMetafileHeader(String)

Gibt die dem angegebenen Metafilezugeordnete MetafileHeader zurück.

GetPropertyItem(Int32)

Ruft das angegebene Eigenschaftselement aus diesem Imageab.

(Geerbt von Image)
GetThumbnailImage(Int32, Int32, Image+GetThumbnailImageAbort, IntPtr)

Gibt eine Miniaturansicht für diese Imagezurück.

(Geerbt von Image)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

(Geerbt von MarshalByRefObject)
PlayRecord(EmfPlusRecordType, Int32, Int32, Byte[])

Gibt einen einzelnen Metadateidatensatz wieder.

RemovePropertyItem(Int32)

Entfernt das angegebene Eigenschaftselement aus diesem Image.

(Geerbt von Image)
RotateFlip(RotateFlipType)

Dreht, kippt oder dreht die Image.

(Geerbt von Image)
Save(Stream, ImageCodecInfo, EncoderParameters)

Speichert dieses Bild im angegebenen Datenstrom mit den angegebenen Encoder- und Bildgeberparametern.

(Geerbt von Image)
Save(Stream, ImageFormat)

Speichert dieses Bild im angegebenen Format im angegebenen Format.

(Geerbt von Image)
Save(String, ImageCodecInfo, EncoderParameters)

Speichert diese Image in der angegebenen Datei mit den angegebenen Encoder- und Bild-Encoder-Parametern.

(Geerbt von Image)
Save(String, ImageFormat)

Speichert diese Image in der angegebenen Datei im angegebenen Format.

(Geerbt von Image)
Save(String)

Speichert diese Image in der angegebenen Datei oder dem angegebenen Datenstrom.

(Geerbt von Image)
SaveAdd(EncoderParameters)

Fügt der datei oder dem Datenstrom, der in einem vorherigen Aufruf der Save-Methode angegeben wurde, einen Frame hinzu. Verwenden Sie diese Methode, um ausgewählte Frames aus einem Mehrrahmenbild in einem anderen Bild mit mehreren Frames zu speichern.

(Geerbt von Image)
SaveAdd(Image, EncoderParameters)

Fügt der datei oder dem Datenstrom, der in einem vorherigen Aufruf der Save-Methode angegeben wurde, einen Frame hinzu.

(Geerbt von Image)
SelectActiveFrame(FrameDimension, Int32)

Wählt den rahmen aus, der durch die Dimension und den Index angegeben ist.

(Geerbt von Image)
SetPropertyItem(PropertyItem)

Speichert ein Eigenschaftselement (Metadatenelement) in diesem Image.

(Geerbt von Image)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Füllt eine SerializationInfo mit den daten auf, die zum Serialisieren des Zielobjekts erforderlich sind.

(Geerbt von Image)

Gilt für: