次の Windows GDI 型を C# で定義する際に少し助けが必要です。C#で a の形式のデータがありbyte[]
、C# で次のようにマーシャリングまたはキャストする必要があります。ポリラインへの回答を得たので、他の質問を参照してください。これはタイプです:
名前
META_CREATEPENINDIRECT
最も近い API 呼び出し
#include <windows.h>
HPEN32 CreatePenIndirect(const LOGPEN32 *pen);
typedef struct tagLOGPEN
{
UINT lopnStyle;
POINT lopnWidth;
COLORREF lopnColor;
} LOGPEN;
説明
U16 値 0 ロンスタイル 1 lopnWidth 2、3 lopnColor
lopnColor はペンの色、lopnWidth はペンの幅です。ペンの幅が 1 より大きいが、lopnStyle がソリッドでない場合、lopnStyle は無視され、とにかくソリッドに設定されます。
lopnStyleは、、、、、、、、、
PS_SOLID
のいずれかPS_DASH
です。PS_DOT
_PS_DASHDOT
_ それらが実際に意味することについては、ソースを確認してください。PS_DASHDOTDOT
PS_NULL
PS_INSIDEFRAME
PS_USERSTYLE
PS_ALTERNATE
また、lopnStyle には、ペンで描かれた線の終了スタイルと結合スタイルを設定する
PS_STYLE_MASK
フラグとマスクのセットもあります。これらを把握します。PS_ENDCAP_ROUND
PS_ENDCAP_SQUARE
PS_ENDCAP_FLAT
PS_ENDCAP_MASK
PS_JOIN_ROUND
PS_JOIN_BEVEL
PS_JOIN_MITER
PS_JOIN_MASK
PS_COSMETIC
PS_GEOMETRIC
PS_TYPE_MASK
更新:これは私がこれまでに得ることができる限り近いです:
fixed (byte* b = dataArray)
{
byte* ptr = (byte*)b;
// Get style
l_nStyle = (ushort)*(ptr);
++ptr;
// Get width
l_nWidth = (ushort)*(++ptr);
++ptr;
// skip one ushort
++ptr; ++ptr;
// Get RGB colors
l_nColorR = (ushort)*(++ptr);
l_nColorG = (ushort)*(++ptr);
l_nColorB = (ushort)*(++ptr);
}