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 Кроме того, deleteWmf параметр можно использовать для удаления дескриптора при удалении метафайла.

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)

Инициализирует новый экземпляр класса с указанным именем файла, дескриптором Windows контекстом устройства и структурой < > />, представляющей прямоугольник, ограничивающий новый .

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)

Инициализирует новый экземпляр класса с указанным именем файла, дескриптором Windows контекстом устройства и структурой < > />, представляющей прямоугольник, ограничивающий новый .

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)

Применяется к