Udostępnij za pośrednictwem


Metafile Klasa

Definicja

Definiuje metaplik graficzny. Metaplik zawiera rekordy opisujące sekwencję operacji graficznych, które mogą być rejestrowane (konstruowane) i odtwarzane (wyświetlane). Ta klasa nie jest dziedziczona.

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
Dziedziczenie
Atrybuty

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć metodę Metafile i użyć jej 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

Uwagi

Jeśli używasz Save metody do zapisywania obrazu graficznego jako pliku Windows Metafile Format (WMF) lub Enhanced Metafile Format (EMF), wynikowy plik jest zapisywany jako plik Portable Network Graphics (PNG). To zachowanie występuje, ponieważ składnik GDI+ .NET Framework nie ma kodera, którego można użyć do zapisywania plików jako plików wmf lub .emf.

Uwaga

W programie .NET 6 i nowszych wersjach pakiet System.Drawing.Common, który obejmuje ten typ, jest obsługiwany tylko w systemach operacyjnych Windows. Użycie tego typu w aplikacjach międzyplatformowych powoduje ostrzeżenia w czasie kompilacji i wyjątki czasu wykonywania. Aby uzyskać więcej informacji, zobacz System.Drawing.Common only supported on Windows (Obsługiwane tylko w systemie Windows).

Konstruktory

Metafile(IntPtr, Boolean)

Inicjuje Metafile nowe wystąpienie klasy z określonego uchwytu.

Metafile(IntPtr, EmfType)

Inicjuje Metafile nowe wystąpienie klasy z określonego uchwytu do kontekstu urządzenia i EmfType wyliczenie określające format klasy Metafile.

Metafile(IntPtr, EmfType, String)

Inicjuje Metafile nowe wystąpienie klasy z określonego uchwytu do kontekstu urządzenia i EmfType wyliczenie określające format klasy Metafile. Ciąg można podać, aby nazwać plik.

Metafile(IntPtr, Rectangle)

Inicjuje Metafile nowe wystąpienie klasy z określonego kontekstu urządzenia, powiązane z określonym prostokątem.

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

Inicjuje nowe wystąpienie Metafile klasy z określonego kontekstu urządzenia, ograniczone przez określony prostokąt, który używa podanej jednostki miary.

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

Inicjuje nowe wystąpienie Metafile klasy z określonego kontekstu urządzenia, ograniczone przez określony prostokąt, który używa podanej jednostki miary, oraz EmfType wyliczenie określające format Metafileelementu .

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

Inicjuje nowe wystąpienie Metafile klasy z określonego kontekstu urządzenia, ograniczone przez określony prostokąt, który używa podanej jednostki miary, oraz EmfType wyliczenie określające format Metafileelementu . Ciąg można podać, aby nazwać plik.

Metafile(IntPtr, RectangleF)

Inicjuje Metafile nowe wystąpienie klasy z określonego kontekstu urządzenia, powiązane z określonym prostokątem.

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

Inicjuje nowe wystąpienie Metafile klasy z określonego kontekstu urządzenia, ograniczone przez określony prostokąt, który używa podanej jednostki miary.

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

Inicjuje nowe wystąpienie Metafile klasy z określonego kontekstu urządzenia, ograniczone przez określony prostokąt, który używa podanej jednostki miary, oraz EmfType wyliczenie określające format Metafileelementu .

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

Inicjuje nowe wystąpienie Metafile klasy z określonego kontekstu urządzenia, ograniczone przez określony prostokąt, który używa podanej jednostki miary, oraz EmfType wyliczenie określające format Metafileelementu . Ciąg można podać, aby nazwać plik.

Metafile(IntPtr, WmfPlaceableFileHeader)

Inicjuje Metafile nowe wystąpienie klasy z określonego uchwytu i .WmfPlaceableFileHeader

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

Inicjuje Metafile nowe wystąpienie klasy z określonego uchwytu i .WmfPlaceableFileHeader deleteWmf Ponadto parametr może służyć do usuwania uchwytu po usunięciu metapliku.

Metafile(Stream)

Inicjuje Metafile nowe wystąpienie klasy z określonego strumienia danych.

Metafile(Stream, IntPtr)

Inicjuje Metafile nowe wystąpienie klasy z określonego strumienia danych.

Metafile(Stream, IntPtr, EmfType)

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia i EmfType wyliczenie określające format elementu Metafile.

Metafile(Stream, IntPtr, EmfType, String)

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia i EmfType wyliczenie określające format elementu Metafile. Ponadto można dodać ciąg zawierający opisową nazwę nowego Metafile .

Metafile(Stream, IntPtr, Rectangle)

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia i strukturę reprezentującą Rectangle prostokąt powiązany z nowym Metafile.

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia, Rectangle strukturę reprezentującą prostokąt, który graniczy z nową Metafilejednostką miary .

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

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia, Rectangle strukturę reprezentującą prostokąt związany z nową Metafilejednostką miary oraz EmfType wyliczenie określające format Metafile.

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

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia, Rectangle strukturę reprezentującą prostokąt związany z nową Metafilejednostką miary oraz EmfType wyliczenie określające format Metafile. Można dodać ciąg zawierający opisową nazwę nowego Metafile .

Metafile(Stream, IntPtr, RectangleF)

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia i strukturę reprezentującą RectangleF prostokąt powiązany z nowym Metafile.

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia, RectangleF strukturę reprezentującą prostokąt, który graniczy z nową Metafilejednostką miary .

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

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia, RectangleF strukturę reprezentującą prostokąt związany z nową Metafilejednostką miary oraz EmfType wyliczenie określające format Metafile.

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

Inicjuje nowe wystąpienie Metafile klasy z określonego strumienia danych, uchwyt systemu Windows do kontekstu urządzenia, RectangleF strukturę reprezentującą prostokąt związany z nową Metafilejednostką miary oraz EmfType wyliczenie określające format Metafile. Można dodać ciąg zawierający opisową nazwę nowego Metafile .

Metafile(String)

Inicjuje Metafile nowe wystąpienie klasy z określonej nazwy pliku.

Metafile(String, IntPtr)

Inicjuje Metafile nowe wystąpienie klasy o określonej nazwie pliku.

Metafile(String, IntPtr, EmfType)

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojściu systemu Windows do kontekstu urządzenia i EmfType wyliczenie określające format elementu Metafile.

Metafile(String, IntPtr, EmfType, String)

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojściu systemu Windows do kontekstu urządzenia i EmfType wyliczenie określające format elementu Metafile. Można również dodać opisowy ciąg.

Metafile(String, IntPtr, Rectangle)

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojściu systemu Windows do kontekstu urządzenia oraz strukturę reprezentującą Rectangle prostokąt powiązany z nowym Metafile.

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojście systemu Windows do kontekstu urządzenia, Rectangle strukturę reprezentującą prostokąt, który wiąże nową Metafilejednostkę miary i podaną jednostkę miary.

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

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, uchwyt systemu Windows do kontekstu urządzenia, strukturę reprezentującą prostokąt związany z nową Metafilejednostką Rectangle miary oraz EmfType wyliczenie określające format Metafileklasy .

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

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, uchwyt systemu Windows do kontekstu urządzenia, strukturę reprezentującą prostokąt związany z nową Metafilejednostką Rectangle miary oraz EmfType wyliczenie określające format Metafileklasy . Można również dodać ciąg opisowy.

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

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojście systemu Windows do kontekstu urządzenia, Rectangle strukturę reprezentującą prostokąt, który wiąże nową Metafilejednostkę miary i podaną jednostkę miary. Można również dodać ciąg opisowy.

Metafile(String, IntPtr, RectangleF)

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojściu systemu Windows do kontekstu urządzenia oraz strukturę reprezentującą RectangleF prostokąt powiązany z nowym Metafile.

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojście systemu Windows do kontekstu urządzenia, RectangleF strukturę reprezentującą prostokąt, który wiąże nową Metafilejednostkę miary i podaną jednostkę miary.

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

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, uchwyt systemu Windows do kontekstu urządzenia, strukturę reprezentującą prostokąt związany z nową Metafilejednostką RectangleF miary oraz EmfType wyliczenie określające format Metafileklasy .

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

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, uchwyt systemu Windows do kontekstu urządzenia, strukturę reprezentującą prostokąt związany z nową Metafilejednostką RectangleF miary oraz EmfType wyliczenie określające format Metafileklasy . Można również dodać ciąg opisowy.

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

Inicjuje nowe wystąpienie Metafile klasy o określonej nazwie pliku, dojście systemu Windows do kontekstu urządzenia, RectangleF strukturę reprezentującą prostokąt, który wiąże nową Metafilejednostkę miary i podaną jednostkę miary. Można również dodać ciąg opisowy.

Właściwości

Flags

Pobiera flagi atrybutów dla danych pikseli tego Imageelementu .

(Odziedziczone po Image)
FrameDimensionsList

Pobiera tablicę identyfikatorów GUID reprezentujących wymiary ramek w tym Imageobiekcie .

(Odziedziczone po Image)
Height

Pobiera wysokość w pikselach tego elementu Image.

(Odziedziczone po Image)
HorizontalResolution

Pobiera rozdzielczość poziomą w pikselach na cal tego Imageelementu .

(Odziedziczone po Image)
Palette

Pobiera lub ustawia paletę kolorów używaną dla tego elementu Image.

(Odziedziczone po Image)
PhysicalDimension

Pobiera szerokość i wysokość tego obrazu.

(Odziedziczone po Image)
PixelFormat

Pobiera format pikseli dla tego Imagepliku .

(Odziedziczone po Image)
PropertyIdList

Pobiera identyfikatory elementów właściwości przechowywanych w tym obiekcie Image.

(Odziedziczone po Image)
PropertyItems

Pobiera wszystkie elementy właściwości (elementy metadanych) przechowywane w tym obiekcie Image.

(Odziedziczone po Image)
RawFormat

Pobiera format pliku tego Imagepliku .

(Odziedziczone po Image)
Size

Pobiera szerokość i wysokość obrazu w pikselach.

(Odziedziczone po Image)
Tag

Pobiera lub ustawia obiekt, który dostarcza dodatkowe dane dotyczące obrazu.

(Odziedziczone po Image)
VerticalResolution

Pobiera rozdzielczość pionową w pikselach na cal tego Imageelementu .

(Odziedziczone po Image)
Width

Pobiera szerokość w pikselach tego elementu Image.

(Odziedziczone po Image)

Metody

Clone()

Tworzy dokładną kopię tego elementu Image.

(Odziedziczone po Image)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Dispose()

Zwalnia wszystkie zasoby używane przez ten Imageprogram .

(Odziedziczone po Image)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element Image i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po Image)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetBounds(GraphicsUnit)

Pobiera granice obrazu w określonej lekcji.

(Odziedziczone po Image)
GetEncoderParameterList(Guid)

Zwraca informacje o parametrach obsługiwanych przez określony koder obrazu.

(Odziedziczone po Image)
GetFrameCount(FrameDimension)

Zwraca liczbę ramek określonego wymiaru.

(Odziedziczone po Image)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetHenhmetafile()

Zwraca uchwyt systemu Windows do rozszerzonego Metafileelementu .

GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetMetafileHeader()

MetafileHeader Zwraca wartość skojarzona z tym Metafileelementem .

GetMetafileHeader(IntPtr)

MetafileHeader Zwraca wartość skojarzona z określonym Metafileelementem .

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

MetafileHeader Zwraca wartość skojarzona z określonym Metafileelementem .

GetMetafileHeader(Stream)

MetafileHeader Zwraca wartość skojarzona z określonym Metafileelementem .

GetMetafileHeader(String)

Zwraca wartość MetafileHeader skojarzona z określonym Metafileelementem .

GetPropertyItem(Int32)

Pobiera określony element właściwości z tego Imageelementu .

(Odziedziczone po Image)
GetThumbnailImage(Int32, Int32, Image+GetThumbnailImageAbort, IntPtr)

Zwraca miniaturę dla tego pliku Image.

(Odziedziczone po Image)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
PlayRecord(EmfPlusRecordType, Int32, Int32, Byte[])

Odtwarza pojedynczy rekord metapliku.

RemovePropertyItem(Int32)

Usuwa określony element właściwości z tego Imageelementu .

(Odziedziczone po Image)
RotateFlip(RotateFlipType)

Obraca, przerzuca lub obraca i odwraca element Image.

(Odziedziczone po Image)
Save(Stream, ImageCodecInfo, EncoderParameters)

Zapisuje ten obraz w określonym strumieniu z określonymi parametrami kodera i kodera obrazu.

(Odziedziczone po Image)
Save(Stream, ImageFormat)

Zapisuje ten obraz w określonym strumieniu w określonym formacie.

(Odziedziczone po Image)
Save(String)

Zapisuje to Image w określonym pliku lub strumieniu.

(Odziedziczone po Image)
Save(String, ImageCodecInfo, EncoderParameters)

Zapisuje to Image w określonym pliku z określonymi parametrami kodera i kodera obrazu.

(Odziedziczone po Image)
Save(String, ImageFormat)

Zapisuje to Image w określonym pliku w określonym formacie.

(Odziedziczone po Image)
SaveAdd(EncoderParameters)

Dodaje ramkę do pliku lub strumienia określonego w poprzednim wywołaniu metody Save . Użyj tej metody, aby zapisać wybrane ramki z obrazu z wieloma ramkami do innego obrazu z wieloma ramkami.

(Odziedziczone po Image)
SaveAdd(Image, EncoderParameters)

Dodaje ramkę do pliku lub strumienia określonego w poprzednim wywołaniu metody Save .

(Odziedziczone po Image)
SelectActiveFrame(FrameDimension, Int32)

Wybiera ramkę określoną przez wymiar i indeks.

(Odziedziczone po Image)
SetPropertyItem(PropertyItem)

Przechowuje element właściwości (część metadanych) w tym obiekcie Image.

(Odziedziczone po Image)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Wypełnia element SerializationInfo danymi potrzebnymi do serializacji obiektu docelowego.

(Odziedziczone po Image)

Dotyczy