0

在 C# 中定义以下 Windows GDI 类型时,我需要一点帮助。我byte[]在 C# 中有 a 形式的数据,我需要以某种方式在 C# 中将其编组或强制转换为以下形式。我想我需要定义正确的结构?这是类型:

姓名

META_POLYLINE

最近的 API 调用

#include <windows.h>
BOOL32 Polyline
(
    HDC32 hdc,
    const POINT32 *pt,
    INT32 count
);

描述

    U16 数组无值
    --------------- --------------
    0 点数
    1 每个奇数直到点的结束 x
    2 每个甚至直到点的结束 y

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

4

3 回答 3

0

你看过PInvoke.net 上的折线条目了吗?

于 2009-11-21T00:05:05.883 回答
0

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

于 2009-11-21T00:08:57.873 回答
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);
   }
}

(未经测试)

于 2009-11-21T00:17:49.103 回答