Beispiel #1
0
 /// <summary>
 ///  Creates a solid brush based on the <paramref name="color"/> using <see cref="CreateSolidBrush(int)"/>.
 /// </summary>
 public CreateBrushScope(Color color)
 {
     HBrush = color.IsSystemColor
         ? User32.GetSysColorBrush(color)
         : CreateSolidBrush(ColorTranslator.ToWin32(color));
     ValidateBrushHandle();
 }
Beispiel #2
0
        public BrushHandle(HBRUSH handle, bool ownsHandle = true)
        {
            Debug.Assert(handle.IsInvalid || handle.Value == ((IntPtr)(-1)) || Imports.GetObjectType(handle) == ObjectType.Brush ||
                         Imports.GetObjectType(handle) == 0);

            HBRUSH      = handle;
            _ownsHandle = ownsHandle;
        }
Beispiel #3
0
            public NativeBrush(HBRUSH hBrush)
            {
                var lb = GetObject <LOGBRUSH>(hBrush);
                var b2 = CreateBrushIndirect(lb);

                SetNativeBrush(b2.DangerousGetHandle());
                b2.SetHandleAsInvalid();
            }
Beispiel #4
0
 private BrushHolder(BrushHandle handle)
 {
     _brush         = handle.HBRUSH;
     _shouldDispose = handle.OwnsHandle;
     if (!_shouldDispose)
     {
         GC.SuppressFinalize(this);
     }
 }
Beispiel #5
0
        public DebugRenderer(ComPtr <IDXGISurface1> surface)
        {
            _surface = new ComPtr <IDXGISurface1>(surface);

            //const string fontName = "Segoe UI Light";
            const string fontName = "Courier";

            fixed(char *pFont = fontName)
            {
                _font = GDI32.CreateFontW(16, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, pFont);
            }

            _brush = GDI32.CreateSolidBrush(new COLORREF(50, 50, 50));
        }
Beispiel #6
0
 /// <summary>Initializes a new instance of the <see cref="WindowClass"/> class and registers the class name.</summary>
 /// <param name="className">
 /// <para>
 /// A string that specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx,
 /// or any of the predefined control-class names.
 /// </para>
 /// <para>
 /// The maximum length for <c>lpszClassName</c> is 256. If <c>lpszClassName</c> is greater than the maximum length, the
 /// RegisterClassEx function will fail.
 /// </para>
 /// </param>
 /// <param name="hInst">A handle to the instance that contains the window procedure for the class.</param>
 /// <param name="wndProc">
 /// A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information,
 /// see WindowProc.
 /// </param>
 /// <param name="styles">The class style(s). This member can be any combination of the Class Styles.</param>
 /// <param name="hIcon">
 /// A handle to the class icon. This member must be a handle to an icon resource. If this member is <c>NULL</c>, the system provides
 /// a default icon.
 /// </param>
 /// <param name="hSmIcon">
 /// A handle to a small icon that is associated with the window class. If this member is <c>NULL</c>, the system searches the icon
 /// resource specified by the <c>hIcon</c> member for an icon of the appropriate size to use as the small icon.
 /// </param>
 /// <param name="hCursor">
 /// A handle to the class cursor. This member must be a handle to a cursor resource. If this member is <c>NULL</c>, an application
 /// must explicitly set the cursor shape whenever the mouse moves into the application's window.
 /// </param>
 /// <param name="hbrBkgd">
 /// A handle to the class background brush. This member can be a handle to the brush to be used for painting the background, or it
 /// can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color).
 /// <para>
 /// The system automatically deletes class background brushes when the class is unregistered by using <see cref="UnregisterClass"/>.
 /// An application should not delete these brushes.
 /// </para>
 /// <para>
 /// When this member is <c>NULL</c>, an application must paint its own background whenever it is requested to paint in its client
 /// area. To determine whether the background must be painted, an application can either process the WM_ERASEBKGND message or test
 /// the <c>fErase</c> member of the PAINTSTRUCT structure filled by the BeginPaint function.
 /// </para>
 /// </param>
 /// <param name="menuName">
 /// A string that specifies the resource name of the class menu, as the name appears in the resource file. If you use an integer to
 /// identify the menu, use the MAKEINTRESOURCE macro. If this member is <c>NULL</c>, windows belonging to this class have no default menu.
 /// </param>
 /// <param name="extraBytes">
 /// The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero.
 /// </param>
 /// <param name="extraWinBytes">
 /// The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application
 /// uses <c>WNDCLASSEX</c> to register a dialog box created by using the <c>CLASS</c> directive in the resource file, it must set
 /// this member to <c>DLGWINDOWEXTRA</c>.
 /// </param>
 public WindowClass(string className, HINSTANCE hInst, WindowProc wndProc, WindowClassStyles styles = 0, HICON hIcon = default, HICON hSmIcon = default,
                    HCURSOR hCursor = default, HBRUSH hbrBkgd = default, string menuName = null, int extraBytes = 0, int extraWinBytes = 0)
 {
     // TODO: Find way to hold on to wndProc ref
     wc = new WNDCLASSEX
     {
         cbSize        = (uint)Marshal.SizeOf(typeof(WNDCLASSEX)),
         lpfnWndProc   = wndProc,
         hInstance     = hInst,
         lpszClassName = className,
         style         = styles,
         hIcon         = hIcon,
         hIconSm       = hSmIcon,
         hCursor       = hCursor,
         hbrBackground = hbrBkgd,
         lpszMenuName  = menuName,
         cbClsExtra    = extraBytes,
         cbWndExtra    = extraWinBytes,
     };
     Atom = Win32Error.ThrowLastErrorIfNull(Macros.MAKEINTATOM(RegisterClassEx(wc)));
 }
 /// <summary>
 ///  Creates a solid brush based on the <paramref name="color"/> using <see cref="CreateSolidBrush(int)"/>.
 /// </summary>
 public CreateBrushScope(Color color)
 {
     HBrush = CreateSolidBrush(ColorTranslator.ToWin32(color));
 }
 public static extern bool FillRect(HDC hdc, [In] ref RECT rcFill, HBRUSH hbrFill);
 /// <summary>
 ///  Creates a solid brush based on the <paramref name="color"/> using <see cref="CreateSolidBrush(int)"/>.
 /// </summary>
 public CreateBrushScope(Color color)
 {
     HBrush = color.IsSystemColor
         ? User32.GetSysColorBrush(ColorTranslator.ToOle(color) & 0xFF)
         : CreateSolidBrush(ColorTranslator.ToWin32(color));
 }
Beispiel #10
0
 public static extern BOOL FillRgn(HDC hdc, HRGN hrgn, HBRUSH hbr);
Beispiel #11
0
 public static extern int FillRect(HDC hDC, ref RECT lprc, HBRUSH hbr);
Beispiel #12
0
 public override int GetHashCode() => HBRUSH.GetHashCode();