Record metafile avanzati

Un metafile avanzato è una matrice di record. Un record metafile è una struttura ENHMETARECORD a lunghezza variabile . All'inizio di ogni record metafile avanzato è una struttura EMR che contiene due membri. Il primo membro, iType, identifica il tipo di record, ovvero la funzione GDI i cui parametri sono contenuti nel record. Poiché le strutture sono variabili in lunghezza, l'altro membro, nSize, contiene le dimensioni del record. Immediatamente dopo il membro nSize sono i parametri rimanenti, se presenti, della funzione GDI. Il resto della struttura contiene dati aggiuntivi dipendenti dal tipo di record.

Il primo record in un metafile avanzato è sempre la struttura ENHMETAHEADER , ovvero l'intestazione di metafile avanzata. L'intestazione specifica le informazioni seguenti:

  • Dimensioni del metafile, in byte
  • Dimensioni della cornice immagine, nelle unità del dispositivo
  • Dimensioni della cornice immagine, in unità di 01 millimetri
  • Numero di record nel metafile
  • Offset in una descrizione di testo facoltativa
  • Dimensioni della tavolozza facoltativa
  • Risoluzione del dispositivo originale, in pixel
  • Risoluzione del dispositivo originale, in millimetri

Una descrizione di testo facoltativa può seguire il record di intestazione. La descrizione del testo descrive l'immagine e il nome dell'autore. La tavolozza facoltativa specifica i colori usati per creare il metafile avanzato. I record rimanenti identificano le funzioni GDI usate per creare l'immagine. L'output esadecimale seguente corrisponde a un record generato per una chiamata alla funzione SetMapMode .

00000011 0000000C 00000004 

Il valore 0x00000011 specifica il tipo di record (corrisponde alla costante EMR_SETMAPMODE definita nel file Wingdi.h). Il valore 0x0000000C specifica la lunghezza del record, in byte. Il valore 0x00000004 identifica la modalità di mapping (corrisponde alla costante MM_LOENGLISH definita nella funzione SetMapMode ).

Per un elenco di tipi di record aggiuntivi, vedere Strutture metafile.