共用方式為


Metafile 類別

定義

定義圖形元檔。 元檔包含記錄,描述可記錄(建構)和播放(顯示)的圖形作業序列。 這個類別不可繼承。

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
繼承
屬性

範例

下列程式代碼範例示範如何建立 Metafile 並使用 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

備註

當您使用 Save 方法將圖形影像儲存為 Windows 元檔格式 (WMF) 或增強型元檔案格式 (EMF) 檔案時,產生的檔案會改為儲存為可攜式網路圖形 (PNG) 檔案。 之所以發生此行為,是因為 .NET Framework 的 GDI+ 元件沒有可用來將檔案儲存為 .wmf 或.emf檔案的編碼器。

注意

在 .NET 6 和更新版本中,System.Drawing.Common 套件,僅支援 Windows 操作系統。 在跨平臺應用程式中使用此類型會導致編譯時期警告和運行時間例外狀況。 如需詳細資訊,請參閱僅支援 WindowsSystem.Drawing.Common。

建構函式

Metafile(IntPtr, Boolean)

從指定的句柄初始化 Metafile 類別的新實例。

Metafile(IntPtr, EmfType, String)

從指定的句柄初始化 Metafile 類別的新實例,以及指定 Metafile格式的 EmfType 列舉。 您可以提供字串來命名檔案。

Metafile(IntPtr, EmfType)

從指定的句柄初始化 Metafile 類別的新實例,以及指定 Metafile格式的 EmfType 列舉。

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

從指定的裝置內容初始化 Metafile 類別的新實例,這個實例是由使用所提供量值單位的指定矩形所系結,以及指定 Metafile格式的 EmfType 列舉。 您可以提供字串來命名檔案。

Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType)

從指定的裝置內容初始化 Metafile 類別的新實例,這個實例是由使用所提供量值單位的指定矩形所系結,以及指定 Metafile格式的 EmfType 列舉。

Metafile(IntPtr, Rectangle, MetafileFrameUnit)

從指定的裝置內容初始化 Metafile 類別的新實例,這個實例是由使用所提供量值單位的指定矩形所系結。

Metafile(IntPtr, Rectangle)

從指定的裝置內容,初始化 Metafile 類別的新實例,這個實例是由指定的矩形系結。

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

從指定的裝置內容初始化 Metafile 類別的新實例,這個實例是由使用所提供量值單位的指定矩形所系結,以及指定 Metafile格式的 EmfType 列舉。 您可以提供字串來命名檔案。

Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType)

從指定的裝置內容初始化 Metafile 類別的新實例,這個實例是由使用所提供量值單位的指定矩形所系結,以及指定 Metafile格式的 EmfType 列舉。

Metafile(IntPtr, RectangleF, MetafileFrameUnit)

從指定的裝置內容初始化 Metafile 類別的新實例,這個實例是由使用所提供量值單位的指定矩形所系結。

Metafile(IntPtr, RectangleF)

從指定的裝置內容,初始化 Metafile 類別的新實例,這個實例是由指定的矩形系結。

Metafile(IntPtr, WmfPlaceableFileHeader, Boolean)

從指定的句柄和 WmfPlaceableFileHeader,初始化 Metafile 類別的新實例。 此外,deleteWmf 參數可用來刪除元檔時刪除句柄。

Metafile(IntPtr, WmfPlaceableFileHeader)

從指定的句柄和 WmfPlaceableFileHeader,初始化 Metafile 類別的新實例。

Metafile(Stream, IntPtr, EmfType, String)

從指定的數據流、裝置內容的 Windows 句柄,以及指定 Metafile格式的 EmfType 列舉,初始化 Metafile 類別的新實例。 此外,也可以新增包含新 Metafile 描述性名稱的字串。

Metafile(Stream, IntPtr, EmfType)

從指定的數據流、裝置內容的 Windows 句柄,以及指定 Metafile格式的 EmfType 列舉,初始化 Metafile 類別的新實例。

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

從指定的數據流、裝置內容的 Windows 句柄、Rectangle 結構,初始化 Metafile 類別的新實例、代表系結新 Metafile的矩形、提供的測量單位,以及指定 Metafile格式的 EmfType 列舉。 可以新增包含新 Metafile 描述性名稱的字串。

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

從指定的數據流、裝置內容的 Windows 句柄、Rectangle 結構,初始化 Metafile 類別的新實例、代表系結新 Metafile的矩形、提供的測量單位,以及指定 Metafile格式的 EmfType 列舉。

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

從指定的數據流 Rectangle、裝置內容的 Windows 句柄、代表系結新 Metafile的矩形,以及提供的測量單位,初始化 Metafile 類別的新實例。

Metafile(Stream, IntPtr, Rectangle)

從指定的數據流、裝置內容的 Windows 句柄,以及代表系結新 Metafile之矩形的 Rectangle 結構,初始化 Metafile 類別的新實例。

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

從指定的數據流、裝置內容的 Windows 句柄、RectangleF 結構,初始化 Metafile 類別的新實例、代表系結新 Metafile的矩形、提供的測量單位,以及指定 Metafile格式的 EmfType 列舉。 可以新增包含新 Metafile 描述性名稱的字串。

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

從指定的數據流、裝置內容的 Windows 句柄、RectangleF 結構,初始化 Metafile 類別的新實例、代表系結新 Metafile的矩形、提供的測量單位,以及指定 Metafile格式的 EmfType 列舉。

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

從指定的數據流 RectangleF、裝置內容的 Windows 句柄、代表系結新 Metafile的矩形,以及提供的測量單位,初始化 Metafile 類別的新實例。

Metafile(Stream, IntPtr, RectangleF)

從指定的數據流、裝置內容的 Windows 句柄,以及代表系結新 Metafile之矩形的 RectangleF 結構,初始化 Metafile 類別的新實例。

Metafile(Stream, IntPtr)

從指定的數據流,初始化 Metafile 類別的新實例。

Metafile(Stream)

從指定的數據流,初始化 Metafile 類別的新實例。

Metafile(String, IntPtr, EmfType, String)

使用指定的檔名、裝置內容的 Windows 句柄,以及指定 Metafile格式的 EmfType 列舉,初始化 Metafile 類別的新實例。 也可以新增描述性字串。

Metafile(String, IntPtr, EmfType)

使用指定的檔名、裝置內容的 Windows 句柄,以及指定 Metafile格式的 EmfType 列舉,初始化 Metafile 類別的新實例。

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

使用指定的檔名、裝置內容的 Windows 句柄、Rectangle 結構,初始化 Metafile 類別的新實例,此結構代表系結新 Metafile、提供的量值單位,以及指定 Metafile格式的 EmfType 列舉。 您也可以新增描述性字串。

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

使用指定的檔名、裝置內容的 Windows 句柄、Rectangle 結構,初始化 Metafile 類別的新實例,此結構代表系結新 Metafile、提供的量值單位,以及指定 Metafile格式的 EmfType 列舉。

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

使用指定的檔名 Rectangle、裝置內容的 Windows 句柄、代表系結新 Metafile的矩形,以及提供的測量單位,初始化 Metafile 類別的新實例。 您也可以新增描述性字串。

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

使用指定的檔名 Rectangle、裝置內容的 Windows 句柄、代表系結新 Metafile的矩形,以及提供的測量單位,初始化 Metafile 類別的新實例。

Metafile(String, IntPtr, Rectangle)

使用指定的檔名、裝置內容的 Windows 句柄,Rectangle 以及代表系結新 Metafile之矩形的矩形,初始化 Metafile 類別的新實例。

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

使用指定的檔名、裝置內容的 Windows 句柄、RectangleF 結構,初始化 Metafile 類別的新實例,此結構代表系結新 Metafile、提供的量值單位,以及指定 Metafile格式的 EmfType 列舉。 您也可以新增描述性字串。

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

使用指定的檔名、裝置內容的 Windows 句柄、RectangleF 結構,初始化 Metafile 類別的新實例,此結構代表系結新 Metafile、提供的量值單位,以及指定 Metafile格式的 EmfType 列舉。

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

使用指定的檔名 RectangleF、裝置內容的 Windows 句柄、代表系結新 Metafile的矩形,以及提供的測量單位,初始化 Metafile 類別的新實例。 您也可以新增描述性字串。

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

使用指定的檔名 RectangleF、裝置內容的 Windows 句柄、代表系結新 Metafile的矩形,以及提供的測量單位,初始化 Metafile 類別的新實例。

Metafile(String, IntPtr, RectangleF)

使用指定的檔名、裝置內容的 Windows 句柄,RectangleF 以及代表系結新 Metafile之矩形的矩形,初始化 Metafile 類別的新實例。

Metafile(String, IntPtr)

使用指定的檔名,初始化 Metafile 類別的新實例。

Metafile(String)

從指定的檔名初始化 Metafile 類別的新實例。

屬性

Flags

取得這個 Image像素數據的屬性旗標。

(繼承來源 Image)
FrameDimensionsList

取得 GUID 的陣列,表示這個 Image中框架的維度。

(繼承來源 Image)
Height

取得這個 Image的高度,以像素為單位。

(繼承來源 Image)
HorizontalResolution

取得這個 Image的水平解析度,以像素為單位。

(繼承來源 Image)
Palette

取得或設定用於這個 Image的調色盤。

(繼承來源 Image)
PhysicalDimension

取得此影像的寬度和高度。

(繼承來源 Image)
PixelFormat

取得這個 Image的像素格式。

(繼承來源 Image)
PropertyIdList

取得儲存在此 Image的屬性項目標識碼。

(繼承來源 Image)
PropertyItems

取得儲存在此 Image的所有屬性專案(元數據片段)。

(繼承來源 Image)
RawFormat

取得這個 Image的檔案格式。

(繼承來源 Image)
Size

取得這個影像的寬度和高度,以像素為單位。

(繼承來源 Image)
Tag

取得或設定 對象,這個物件會提供影像的其他數據。

(繼承來源 Image)
VerticalResolution

取得這個 Image的垂直解析度,以像素為單位。

(繼承來源 Image)
Width

取得這個 Image的寬度,以像素為單位。

(繼承來源 Image)

方法

Clone()

建立這個 Image的確切複本。

(繼承來源 Image)
CreateObjRef(Type)

建立物件,其中包含產生用來與遠端物件通訊之 Proxy 所需的所有相關信息。

(繼承來源 MarshalByRefObject)
Dispose()

釋放此 Image所使用的所有資源。

(繼承來源 Image)
Dispose(Boolean)

釋放 Image 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 Image)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetBounds(GraphicsUnit)

取得指定單位中影像的界限。

(繼承來源 Image)
GetEncoderParameterList(Guid)

傳回指定之影像編碼器所支援之參數的相關信息。

(繼承來源 Image)
GetFrameCount(FrameDimension)

傳回指定維度的框架數目。

(繼承來源 Image)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetHenhmetafile()

將 Windows 句柄傳回增強 Metafile

GetLifetimeService()
已淘汰.

擷取控制這個實例存留期原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetMetafileHeader()

傳回與此 Metafile相關聯的 MetafileHeader

GetMetafileHeader(IntPtr, WmfPlaceableFileHeader)

傳回與指定之 Metafile相關聯的 MetafileHeader

GetMetafileHeader(IntPtr)

傳回與指定之 Metafile相關聯的 MetafileHeader

GetMetafileHeader(Stream)

傳回與指定之 Metafile相關聯的 MetafileHeader

GetMetafileHeader(String)

傳回與指定之 Metafile相關聯的 MetafileHeader

GetPropertyItem(Int32)

從這個 Image取得指定的屬性專案。

(繼承來源 Image)
GetThumbnailImage(Int32, Int32, Image+GetThumbnailImageAbort, IntPtr)

傳回這個 Image的縮圖。

(繼承來源 Image)
GetType()

取得目前實例的 Type

(繼承來源 Object)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個實例的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 對象的淺層複本。

(繼承來源 MarshalByRefObject)
PlayRecord(EmfPlusRecordType, Int32, Int32, Byte[])

播放個別元文件記錄。

RemovePropertyItem(Int32)

從這個 Image移除指定的屬性專案。

(繼承來源 Image)
RotateFlip(RotateFlipType)

旋轉、翻轉或旋轉,並翻轉 Image

(繼承來源 Image)
Save(Stream, ImageCodecInfo, EncoderParameters)

使用指定的編碼器和影像編碼器參數,將此影像儲存至指定的數據流。

(繼承來源 Image)
Save(Stream, ImageFormat)

將此影像儲存至指定格式的指定資料流。

(繼承來源 Image)
Save(String, ImageCodecInfo, EncoderParameters)

使用指定的編碼器和影像編碼器參數,將此 Image 儲存至指定的檔案。

(繼承來源 Image)
Save(String, ImageFormat)

將此 Image 儲存至指定格式的指定檔案。

(繼承來源 Image)
Save(String)

將此 Image 儲存至指定的檔案或數據流。

(繼承來源 Image)
SaveAdd(EncoderParameters)

將框架加入至先前呼叫 Save 方法中指定的檔案或數據流。 使用這個方法可將選取的畫面從多框架影像儲存到另一個多框架影像。

(繼承來源 Image)
SaveAdd(Image, EncoderParameters)

將框架加入至先前呼叫 Save 方法中指定的檔案或數據流。

(繼承來源 Image)
SelectActiveFrame(FrameDimension, Int32)

選取維度和索引所指定的框架。

(繼承來源 Image)
SetPropertyItem(PropertyItem)

在此 Image中儲存屬性專案(元數據片段)。

(繼承來源 Image)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

明確介面實作

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

以串行化目標物件所需的數據填入 SerializationInfo

(繼承來源 Image)

適用於