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 操作系统上受支持。 在跨平台应用中使用此类型会导致编译时警告和运行时异常。 有关详细信息,请参阅仅在 Windows上支持的 system.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格式的 EmfType 枚举初始化 Metafile 类的新实例。 可以添加包含新 Metafile 的描述性名称的字符串。

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

从指定的数据流、设备上下文的 Windows 句柄、Rectangle 表示绑定新 Metafile的矩形、提供的度量单位以及指定 Metafile格式的 EmfType 枚举初始化 Metafile 类的新实例。

Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit)

从指定的数据流、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形的 Rectangle 结构以及提供的度量单位初始化 Metafile 类的新实例。

Metafile(Stream, IntPtr, Rectangle)

从指定的数据流、设备上下文的 Windows 句柄以及表示绑定新 Metafile的矩形的 Rectangle 结构初始化 Metafile 类的新实例。

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

从指定的数据流、设备上下文的 Windows 句柄、RectangleF 表示绑定新 Metafile的矩形、提供的度量单位以及指定 Metafile格式的 EmfType 枚举初始化 Metafile 类的新实例。 可以添加包含新 Metafile 的描述性名称的字符串。

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

从指定的数据流、设备上下文的 Windows 句柄、RectangleF 表示绑定新 Metafile的矩形、提供的度量单位以及指定 Metafile格式的 EmfType 枚举初始化 Metafile 类的新实例。

Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit)

从指定的数据流、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形的 RectangleF 结构以及提供的度量单位初始化 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 句柄、表示绑定新 Metafile的矩形的 Rectangle 结构、提供的度量单位以及指定 Metafile格式的 EmfType 枚举初始化 Metafile 类的新实例。 还可以添加描述性字符串。

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

使用指定的文件名、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形的 Rectangle 结构、提供的度量单位以及指定 Metafile格式的 EmfType 枚举初始化 Metafile 类的新实例。

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

使用指定的文件名、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形和提供的度量单位的矩形 Rectangle 结构初始化 Metafile 类的新实例。 还可以添加描述性字符串。

Metafile(String, IntPtr, Rectangle, MetafileFrameUnit)

使用指定的文件名、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形和提供的度量单位的矩形 Rectangle 结构初始化 Metafile 类的新实例。

Metafile(String, IntPtr, Rectangle)

使用指定的文件名、设备上下文的 Windows 句柄和表示绑定新 Metafile的矩形的矩形初始化 RectangleMetafile 类的新实例。

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

使用指定的文件名、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形的 RectangleF 结构、提供的度量单位以及指定 Metafile格式的 EmfType 枚举初始化 Metafile 类的新实例。 还可以添加描述性字符串。

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

使用指定的文件名、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形的 RectangleF 结构、提供的度量单位以及指定 Metafile格式的 EmfType 枚举初始化 Metafile 类的新实例。

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

使用指定的文件名、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形和提供的度量单位的矩形 RectangleF 结构初始化 Metafile 类的新实例。 还可以添加描述性字符串。

Metafile(String, IntPtr, RectangleF, MetafileFrameUnit)

使用指定的文件名、设备上下文的 Windows 句柄、表示绑定新 Metafile的矩形和提供的度量单位的矩形 RectangleF 结构初始化 Metafile 类的新实例。

Metafile(String, IntPtr, RectangleF)

使用指定的文件名、设备上下文的 Windows 句柄和表示绑定新 Metafile的矩形的矩形初始化 RectangleFMetafile 类的新实例。

Metafile(String, IntPtr)

使用指定的文件名初始化 Metafile 类的新实例。

Metafile(String)

从指定的文件名初始化 Metafile 类的新实例。

属性

Flags

获取此 Image像素数据的属性标志。

(继承自 Image)
FrameDimensionsList

获取表示此 Image中帧维度的 GUID 数组。

(继承自 Image)
Height

获取此 Image的高度(以像素为单位)。

(继承自 Image)
HorizontalResolution

获取此 Image的水平分辨率(以像素/英寸为单位)。

(继承自 Image)
Palette

获取或设置用于此 Image的调色板。

(继承自 Image)
PhysicalDimension

获取此图像的宽度和高度。

(继承自 Image)
PixelFormat

获取此 Image的像素格式。

(继承自 Image)
PropertyIdList

获取此 Image中存储的属性项的 ID。

(继承自 Image)
PropertyItems

获取存储在此 Image中的所有属性项(元数据片段)。

(继承自 Image)
RawFormat

获取此 Image的文件格式。

(继承自 Image)
Size

获取此图像的宽度和高度(以像素为单位)。

(继承自 Image)
Tag

获取或设置一个对象,该对象提供有关图像的其他数据。

(继承自 Image)
VerticalResolution

获取此 Image的垂直分辨率(以像素/英寸为单位)。

(继承自 Image)
Width

获取此 Image的宽度(以像素为单位)。

(继承自 Image)

方法

Clone()

创建此 Image的确切副本。

(继承自 Image)
CreateObjRef(Type)

创建一个对象,其中包含生成用于与远程对象通信的代理所需的所有相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放此 Image使用的所有资源。

(继承自 Image)
Dispose(Boolean)

释放 Image 使用的非托管资源,并选择性地释放托管资源。

(继承自 Image)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetBounds(GraphicsUnit)

获取指定单元中图像的边界。

(继承自 Image)
GetEncoderParameterList(Guid)

返回有关指定图像编码器支持的参数的信息。

(继承自 Image)
GetFrameCount(FrameDimension)

返回指定维度的帧数。

(继承自 Image)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetHenhmetafile()

返回增强 Metafile的 Windows 句柄。

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)

适用于