EnumerateMetafile Método (Metafile, Point, Graphics.EnumerateMetafileProc)
TOC
Recolher sumário
Expandir sumário
Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Método Graphics.EnumerateMetafile (Metafile, Point, Graphics.EnumerateMetafileProc)

 

Envia os registros do Metafile, um de cada vez, para um método de retorno de chamada para exibição em um ponto especificado.

Namespace:   System.Drawing
Assembly:  System.Drawing (em System.Drawing.dll)

public void EnumerateMetafile(
	Metafile metafile,
	Point destPoint,
	Graphics.EnumerateMetafileProc callback
)

Parâmetros

metafile

Metafile para enumerar.

destPoint

Point estrutura que especifica o local do canto superior esquerdo do metarquivo desenhado.

callback

Graphics.EnumerateMetafileProc delegado que especifica o método ao qual os registros de metarquivo são enviados.

Este método enumera os registros contidos o metarquivo especificado.Cada registro individualmente é enviado para um método de retorno de chamada especificado pelo callback parâmetro.Normalmente, o método de retorno de chamada chama o PlayRecord método "reproduzir", ou desenhar, o registro.

Se o método de retorno de chamada chama PlayRecord, deverá fazê-lo ao chamar o PlayRecord método específico Metafile que está sendo enumerado.

O exemplo de código a seguir cria um formulário que tenha um Metafile como um dos seus membros privados.O OnPaint chamadas de método EnumerateMetafile, que chama o formulário MetafileCallback método para cada registro de metarquivo.O MetafileCallback chamadas de método de PlayRecord método.Observe que o MetafileCallback método recebe os dados de registro como um IntPtr, mas o PlayRecord método espera que os dados de registro como uma matriz de bytes.A chamada para Copy copia os dados de registro para uma matriz de bytes para que ele pode ser passado para 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());
    }
}

.NET Framework
Disponível desde 1.1
Retornar ao topo
Mostrar:
© 2016 Microsoft