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上支持的 system.Drawing.Common
构造函数
属性
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) |
方法
显式接口实现
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
使用序列化目标对象所需的数据填充 SerializationInfo。 (继承自 Image) |