コード例 #1
0
ファイル: Pen.cs プロジェクト: Wiladams/NewTOAPIA
 public Pen(int penStyle, int width, uint colorref, Guid aGuid)
 {
     fLogPen = new LOGPEN();
     fLogPen.lopnColor = colorref;
     fLogPen.lopnStyle = penStyle;
     fLogPen.lopnWidth = width;
     fGuid = aGuid;
 }
コード例 #2
0
        public unsafe static COLORREF GetPenColor(PenHandle pen)
        {
            var penType = Imports.GetObjectType((IntPtr)pen);

            switch (penType)
            {
            case ObjectType.Pen:
                LOGPEN logPen = new LOGPEN();
                int    size   = sizeof(LOGPEN);
                if (Imports.GetObjectW(pen, size, &logPen) == size)
                {
                    return(logPen.lopnColor);
                }
                break;

            case ObjectType.ExtendedPen:
                BufferHelper.BufferInvoke((HeapBuffer buffer) =>
                {
                    size = Imports.GetObjectW(pen, 0, null);
                    if (size == 0)
                    {
                        throw new InvalidOperationException();
                    }
                    buffer.EnsureByteCapacity((ulong)size);
                    size = Imports.GetObjectW(pen, size, buffer.VoidPointer);
                    if (size < sizeof(EXTLOGPEN))
                    {
                        throw new InvalidOperationException();
                    }
                    return(((EXTLOGPEN *)buffer.VoidPointer)->elpColor);
                });
                break;
            }

            throw new InvalidOperationException();
        }
コード例 #3
0
 public static extern IntPtr CreatePenIndirect([In] ref LOGPEN plpen);
コード例 #4
0
 public HCPen()
 {
     FLogPen = new LOGPEN();
     ReCreateHandle();
 }
コード例 #5
0
 public static int GetObject(HandleRef hObject, LOGPEN lp)
 {
     return GetObject(hObject, Marshal.SizeOf(typeof(LOGPEN)), lp);
 }
コード例 #6
0
 public static extern int CreatePenIndirect(
     ref LOGPEN lplogpen
     );