如何从字节数组中解析折线元文件记录?

时间:2009-11-20 23:58:31

标签: c# metafile

我需要一点帮助来定义C#中的以下Windows GDI类型。我在C#中以byte[]的形式获得数据,我需要以某种方式封送或在C#中将其转换为以下内容。我想我需要定义正确的结构?这是类型:

NAME

META_POLYLINE

NEAREST API CALL

#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

折线是一个点列表。与多边形不同,折线始终未填充,并且可以打开。

3 个答案:

答案 0 :(得分:0)

你看过Polyline entry on PInvoke.net了吗?

答案 1 :(得分:0)

好的,折线的元文件记录......您可能想尝试从字节数组到UInt16数组执行Buffer.BlockCopy

答案 2 :(得分:0)

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);
   }
}

(未测试的)