Metafile Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет графический метафайл. Метафайл содержит записи, описывающие последовательность графических операций, которые могут быть записаны (созданы) и воспроизведены (выведены на экран). Этот класс не наследуется.
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-файл. Это происходит потому, что компонент GDI+ платформа .NET Framework не имеет кодировщика, который можно использовать для сохранения файлов в формате WMF или .emf.
Примечание
В .NET 6 и более поздних версиях пакет System.Drawing.Common, включающий этот тип, поддерживается только в операционных системах Windows. Использование этого типа в кроссплатформенных приложениях вызывает предупреждения во время компиляции и исключения во время выполнения. Дополнительные сведения см . в статье System.Drawing.Common, поддерживаемая только в Windows.
Конструкторы
Metafile(IntPtr, Boolean) |
Инициализирует новый экземпляр класса Metafile из указанного дескриптора. |
Metafile(IntPtr, EmfType) |
Инициализирует новый экземпляр класса Metafile из указанного дескриптора контекста устройства и перечисление EmfType, определяющее формат Metafile. |
Metafile(IntPtr, EmfType, String) |
Инициализирует новый экземпляр класса Metafile из указанного дескриптора контекста устройства и перечисление EmfType, определяющее формат Metafile. Для определения имени файла может использоваться строка. |
Metafile(IntPtr, Rectangle) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником. |
Metafile(IntPtr, Rectangle, MetafileFrameUnit) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются указанные единицы измерения. |
Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile. |
Metafile(IntPtr, Rectangle, MetafileFrameUnit, EmfType, String) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile. Для назначения имени файлу может быть предоставлена строка. |
Metafile(IntPtr, RectangleF) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником. |
Metafile(IntPtr, RectangleF, MetafileFrameUnit) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются указанные единицы измерения. |
Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile. |
Metafile(IntPtr, RectangleF, MetafileFrameUnit, EmfType, String) |
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile. Для назначения имени файлу может быть предоставлена строка. |
Metafile(IntPtr, WmfPlaceableFileHeader) |
Инициализация нового экземпляра класса Metafile из указанного дескриптора и заголовка WmfPlaceableFileHeader. |
Metafile(IntPtr, WmfPlaceableFileHeader, Boolean) |
Инициализация нового экземпляра класса Metafile из указанного дескриптора и заголовка WmfPlaceableFileHeader. Также для удаления дескриптора при удалении метафайла можно использовать параметр |
Metafile(Stream) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных. |
Metafile(Stream, IntPtr) |
Инициализирует новый экземпляр класса Metafile из указанного потока данных. |
Metafile(Stream, IntPtr, EmfType) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и перечисления EmfType, определяющего формат Metafile. |
Metafile(Stream, IntPtr, EmfType, String) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и перечисления EmfType, определяющего формат Metafile. Также может быть добавлена строка, содержащая описательное имя нового объекта Metafile. |
Metafile(Stream, IntPtr, Rectangle) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры Rectangle, определяющей прямоугольник, ограничивающий новый объект Metafile. |
Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, и предоставленных единиц измерения. |
Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit, EmfType) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры Rectangle, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile. |
Metafile(Stream, IntPtr, Rectangle, MetafileFrameUnit, EmfType, String) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры Rectangle, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile. Также может быть добавлена строка, содержащая описательное имя нового объекта Metafile. |
Metafile(Stream, IntPtr, RectangleF) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры RectangleF, определяющей прямоугольник, ограничивающий новый объект Metafile. |
Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, и предоставленных единиц измерения. |
Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit, EmfType) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры RectangleF, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile. |
Metafile(Stream, IntPtr, RectangleF, MetafileFrameUnit, EmfType, String) |
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры RectangleF, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile. Также может быть добавлена строка, содержащая описательное имя нового объекта Metafile. |
Metafile(String) |
Инициализирует новый экземпляр класса Metafile из указанного имени файла. |
Metafile(String, IntPtr) |
Инициализирует новый экземпляр класса Metafile c указанным именем файла. |
Metafile(String, IntPtr, EmfType) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и перечислением EmfType, определяющим формат Metafile. |
Metafile(String, IntPtr, EmfType, String) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и перечислением EmfType, определяющим формат Metafile. Также может быть добавлена описательная строка. |
Metafile(String, IntPtr, Rectangle) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile. |
Metafile(String, IntPtr, Rectangle, MetafileFrameUnit) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, а также заданными единицами измерения. |
Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, EmfType) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile. |
Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, EmfType, String) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile. Также может быть добавлена описательная строка. |
Metafile(String, IntPtr, Rectangle, MetafileFrameUnit, String) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, а также заданными единицами измерения. Также может быть добавлена описательная строка. |
Metafile(String, IntPtr, RectangleF) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile. |
Metafile(String, IntPtr, RectangleF, MetafileFrameUnit) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, а также заданными единицами измерения. |
Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, EmfType) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile. |
Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, EmfType, String) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile. Также может быть добавлена описательная строка. |
Metafile(String, IntPtr, RectangleF, MetafileFrameUnit, String) |
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект 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) |
Возвращает объект MetafileHeader, связанный с заданным объектом Metafile. |
GetMetafileHeader(IntPtr, WmfPlaceableFileHeader) |
Возвращает объект 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) |
Сохраняет объект Image в указанный файл или поток. (Унаследовано от Image) |
Save(String, ImageCodecInfo, EncoderParameters) |
Сохраняет объект Image в указанный файл с заданным кодировщиком и определенными параметрами кодировщика изображения. (Унаследовано от Image) |
Save(String, ImageFormat) |
Сохраняет объект 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) |