Come effettuo il parsing di un record di metafile polilinea da un array di byte?
Domanda
Ho bisogno di un po 'di aiuto nel definire il seguente tipo di Windows GDI in C #. Ho i dati sotto forma di un byte[]
in C #, e ho bisogno di schierare o lanciare come il seguente in C # in qualche modo. Suppongo che ho bisogno di definire il corretto struct? Questo è il tipo:
nome
META_POLYLINE
PIU 'VICINA API CALL
#include <windows.h>
BOOL32 Polyline
(
HDC32 hdc,
const POINT32 *pt,
INT32 count
);
DESCRIZIONE
U16 array no Value --------------------------- -------------- 0 no of points 1 each odd until the end x of the point 2 each even until the end y of the point
Una polilinea è un elenco di punti. A differenza di un poligono, una polilinea è sempre riempita, e può essere aperto.
Soluzione
byte[] buffer;
fixed (byte* b = buffer)
{
ushort* ptr = (ushort*)b;
int count = (int)*ptr;
var points = new Point[count];
for (int i = 0; i < count; i++)
{
int x = (int)*(++ptr);
int y = (int)*(++ptr);
points[i] = new Point(x, y);
}
}
(testato)
Altri suggerimenti
Hai guardato la voce Polilinea su PInvoke.net ancora?
D'accordo, un record metafile per una polilinea ... Si potrebbe desiderare di provare a fare un Buffer.BlockCopy
dalla matrice di byte in una matrice UInt16
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow