Metafile Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет графический метафайл. Метафайл содержит записи, описывающие последовательность графических операций, которые можно записывать (создавать) и воспроизводить обратно (отображаемое). Этот класс не наследуется.
public ref class Metafile sealed : System::Drawing::Image
[System.Runtime.InteropServices.ComVisible(false)]
[System.Serializable]
public sealed class Metafile : System.Drawing.Image
[System.Serializable]
public sealed class Metafile : System.Drawing.Image
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Serializable>]
type Metafile = class
inherit Image
[<System.Serializable>]
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). Это происходит, так как компонент GDI+ .NET Framework не имеет кодировщика, который можно использовать для сохранения файлов в виде WMF или .emf файлов.
Note
В .NET 6 и более поздних версиях пакет System.Drawing.Common, который включает этот тип, поддерживается только в операционных системах Windows. Использование этого типа в кроссплатформенных приложениях вызывает предупреждения во время компиляции и исключения во время выполнения. Дополнительные сведения см. в статье System.Drawing.Common, поддерживаемой только в Windows.
Конструкторы
| Имя | Описание |
|---|---|
| Metafile(IntPtr, Boolean) |
Инициализирует новый экземпляр класса из указанного Metafile дескриптора. |
| Metafile(IntPtr, EmfType, String) |
Инициализирует новый экземпляр Metafile класса из указанного дескриптора в контекст устройства и EmfType перечисление, указывающее формат.Metafile Строку можно указать для имени файла. |
| Metafile(IntPtr, EmfType) |
Инициализирует новый экземпляр Metafile класса из указанного дескриптора в контекст устройства и EmfType перечисление, указывающее формат.Metafile |
| Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType, String) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником, который использует указанную единицу измерения, и EmfType перечисление, указывающее формат Metafile. Строку можно указать для имени файла. |
| Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником, который использует указанную единицу измерения, и EmfType перечисление, указывающее формат Metafile. |
| Metafile(IntPtr, Rectangle, MetafileFrameUnit) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником, который использует предоставленный единицу измерения. |
| Metafile(IntPtr, Rectangle) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником. |
| Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType, String) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником, который использует указанную единицу измерения, и EmfType перечисление, указывающее формат Metafile. Строку можно указать для имени файла. |
| Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником, который использует указанную единицу измерения, и EmfType перечисление, указывающее формат Metafile. |
| Metafile(IntPtr, RectangleF, MetafileFrameUnit) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником, который использует предоставленный единицу измерения. |
| Metafile(IntPtr, RectangleF) |
Инициализирует новый экземпляр Metafile класса из указанного контекста устройства, привязанного заданным прямоугольником. |
| Metafile(IntPtr, WmfPlaceableFileHeader, Boolean) |
Инициализирует новый экземпляр класса из указанного Metafile дескриптора и .WmfPlaceableFileHeader Кроме того, |
| Metafile(IntPtr, WmfPlaceableFileHeader) |
Инициализирует новый экземпляр класса из указанного Metafile дескриптора и .WmfPlaceableFileHeader |
| Metafile(Stream, IntPtr, EmfType, String) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных, дескриптор Windows контекста устройства и перечисление EmfType, указывающее формат Metafile. Кроме того, можно добавить строку, содержащую описательное имя нового Metafile . |
| Metafile(Stream, IntPtr, EmfType) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных, дескриптор Windows контекста устройства и перечисление EmfType, указывающее формат Metafile. |
| Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit, EmfType, String) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных. Windows дескриптор контекста устройства, структура Rectangle, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. Можно добавить строку, содержащую описательное имя нового Metafile . |
| Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit, EmfType) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных. Windows дескриптор контекста устройства, структура Rectangle, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. |
| Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных, дескриптор Windows контекста устройства, структуру Rectangle, представляющую прямоугольник, ограничивающий новый Metafile и указанную единицу измерения. |
| Metafile(Stream, IntPtr, Rectangle) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных, Windows дескриптор контекста устройства и структуру Rectangle, представляющую прямоугольник, ограничивающий новый Metafile. |
| Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit, EmfType, String) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных. Windows дескриптор контекста устройства, структура RectangleF, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. Можно добавить строку, содержащую описательное имя нового Metafile . |
| Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit, EmfType) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных. Windows дескриптор контекста устройства, структура RectangleF, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. |
| Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных, дескриптор Windows контекста устройства, структуру RectangleF, представляющую прямоугольник, ограничивающий новый Metafile и указанную единицу измерения. |
| Metafile(Stream, IntPtr, RectangleF) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных, Windows дескриптор контекста устройства и структуру RectangleF, представляющую прямоугольник, ограничивающий новый Metafile. |
| Metafile(Stream, IntPtr) |
Инициализирует новый экземпляр класса из указанного Metafile потока данных. |
| Metafile(Stream) |
Инициализирует новый экземпляр класса из указанного Metafile потока данных. |
| Metafile(String, IntPtr, EmfType, String) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла, Windows дескриптором контекста устройства и перечислением EmfType, указывающим формат Metafile. Также можно добавить описательную строку. |
| Metafile(String, IntPtr, EmfType) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла, Windows дескриптором контекста устройства и перечислением EmfType, указывающим формат Metafile. |
| Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, EmfType, String) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла. дескриптор Windows с контекстом устройства, структура Rectangle, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. Также можно добавить описательную строку. |
| Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, EmfType) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла. дескриптор Windows с контекстом устройства, структура Rectangle, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. |
| Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, String) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла, дескриптором Windows контекста устройства, структурой Rectangle, представляющей прямоугольник, ограничивающий новый Metafile, и указанную единицу измерения. Также можно добавить описательную строку. |
| Metafile(String, IntPtr, Rectangle, MetafileFrameUnit) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла, дескриптором Windows контекста устройства, структурой Rectangle, представляющей прямоугольник, ограничивающий новый Metafile, и указанную единицу измерения. |
| Metafile(String, IntPtr, Rectangle) |
Инициализирует новый экземпляр класса |
| Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, EmfType, String) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла. дескриптор Windows с контекстом устройства, структура RectangleF, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. Также можно добавить описательную строку. |
| Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, EmfType) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла. дескриптор Windows с контекстом устройства, структура RectangleF, представляющая прямоугольник, ограничивающий новый Metafile, указанную единицу измерения и перечисление EmfType, указывающее формат Metafile. |
| Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, String) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла, дескриптором Windows контекста устройства, структурой RectangleF, представляющей прямоугольник, ограничивающий новый Metafile, и указанную единицу измерения. Также можно добавить описательную строку. |
| Metafile(String, IntPtr, RectangleF, MetafileFrameUnit) |
Инициализирует новый экземпляр класса Metafile с указанным именем файла, дескриптором Windows контекста устройства, структурой RectangleF, представляющей прямоугольник, ограничивающий новый Metafile, и указанную единицу измерения. |
| Metafile(String, IntPtr, RectangleF) |
Инициализирует новый экземпляр класса |
| 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) |
Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
| Dispose() |
Освобождает все ресурсы, используемые этим Imageпараметром. (Унаследовано от Image) |
| Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые Image и при необходимости освобождает управляемые ресурсы. (Унаследовано от Image) |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetBounds(GraphicsUnit) |
Возвращает границы изображения в указанной единице. (Унаследовано от Image) |
| GetEncoderParameterList(Guid) |
Возвращает сведения о параметрах, поддерживаемых указанным кодировщиком изображений. (Унаследовано от Image) |
| GetFrameCount(FrameDimension) |
Возвращает количество кадров указанного измерения. (Унаследовано от Image) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetHenhmetafile() |
Возвращает дескриптор Windows расширенной Metafile. |
| GetLifetimeService() |
Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
| GetMetafileHeader() |
Возвращает связанный MetafileHeader с этим Metafileобъект. |
| GetMetafileHeader(IntPtr, WmfPlaceableFileHeader) |
Возвращает связанный MetafileHeader с указанным Metafile. |
| GetMetafileHeader(IntPtr) |
Возвращает связанный MetafileHeader с указанным Metafile. |
| GetMetafileHeader(Stream) |
Возвращает связанный MetafileHeader с указанным Metafile. |
| GetMetafileHeader(String) |
Возвращает связанный MetafileHeader с указанным Metafile. |
| 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) |