Как проанализировать запись метафайла полилинии из массива байтов?
Вопрос
Мне нужна небольшая помощь в определении следующего типа Windows GDI на C#.У меня есть данные в виде byte[]
в C#, и мне нужно каким-то образом маршалировать или привести его к следующему виду в C#.Полагаю, мне нужно определить правильную структуру?Это тип:
ИМЯ
META_POLYLINE
БЛИЖАЙШИЙ ВЫЗОВ API
#include <windows.h>
BOOL32 Polyline
(
HDC32 hdc,
const POINT32 *pt,
INT32 count
);
ОПИСАНИЕ
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
Полилиния — это список точек.В отличие от полигона, полилиния всегда незаполнена и может быть открытой.
Решение
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);
}
}
(Непроверено)
Другие советы
Вы посмотрели на Запись ломаной линии на PInvoke.net еще?
Хорошо, запись метафайла для полилинии...Возможно, вы захотите попробовать сделать Buffer.BlockCopy
из массива байтов в UInt16
множество.
Не связан с StackOverflow