كيف يمكنني تحليل سجل metafile polyline من مجموعة بايت؟

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

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 مجموعة مصفوفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top