كيف يمكنني تحليل سجل metafile polyline من مجموعة بايت؟
سؤال
أحتاج إلى القليل من المساعدة في تحديد نوع 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
Polyline هي قائمة من النقاط. على عكس المضلع ، فإن polyline غير مملوء دائمًا ، ويمكن أن يكون مفتوحًا.
المحلول
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);
}
}
(لم يخبر)
نصائح أخرى
هل نظرت إلى إدخال polyline على pinvoke.net حتى الآن؟
حسنًا ، سجل Metafile لـ Polyline ... قد ترغب في محاولة القيام Buffer.BlockCopy
من صفيف البايت إلى أ UInt16
مجموعة مصفوفة.
لا تنتمي إلى StackOverflow