Metafile 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義圖形元檔。 元檔包含記錄,描述可記錄(建構)和播放(顯示)的圖形作業序列。 這個類別不可繼承。
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 操作系統。 在跨平臺應用程式中使用此類型會導致編譯時期警告和運行時間例外狀況。 如需詳細資訊,請參閱僅支援 Windows
建構函式
屬性
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) |
方法
明確介面實作
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
以串行化目標物件所需的數據填入 SerializationInfo。 (繼承來源 Image) |