Metafile 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义图形图元文件。 图元文件包含描述一系列图形操作的记录,这些操作可被记录(构造)和回放(显示)。 此类不能继承。
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
- 继承
- 属性
示例
下面的代码示例演示如何创建 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 |
获取 GUID 的数组,这些 GUID 表示此 Image 中帧的维数。 (继承自 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) |