Frage

Ich brauche ein wenig Hilfe bei der Definition des folgenden Windows -GDI -Typs in C#. Ich habe die Daten in Form von a byte[] In C#, und ich muss es irgendwie als Folgendes in C#marschallieren oder wirken. Ich nehme an, ich muss die richtige Struktur definieren? Dies ist der Typ:

NAME

META_POLYLINE

Nächster API -Anruf

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

BEZEICHNUNG

    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

Eine Polylinie ist eine Liste von Punkten. Im Gegensatz zu einem Polygon ist eine Polylinie immer nicht nachgefüllt und kann offen sein.

War es hilfreich?

Lösung

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

(Ungetestet)

Andere Tipps

Hast du dir das angesehen? Polyline -Eintrag auf Pinvoke.net noch?

Okay, ein Metafile -Rekord für eine Polylinie ... Sie möchten vielleicht versuchen, eine zu machen Buffer.BlockCopy vom Byte -Array nach a UInt16 Array.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top