Как проанализировать запись метафайла полилинии из массива байтов?

StackOverflow https://stackoverflow.com/questions/1773953

  •  21-09-2019
  •  | 
  •  

Вопрос

Мне нужна небольшая помощь в определении следующего типа 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 множество.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top