Exemplo n.º 1
0
        /// <summary>
        /// Center the mouse pointer on a specified control (i.e. Button)
        /// </summary>
        /// <param name="control">Control on which to center mouse pointer</param>
        public static void CenterMousePointer(Control control)
        {
            Win32.Point p = new Win32.Point();
            p.x = control.Left + (control.Width / 2);
            p.y = control.Top + (control.Height / 2);

            Win32.ClientToScreen(control.FindForm().Handle, ref p);
            Win32.SetCursorPos(p.x, p.y);
        }
Exemplo n.º 2
0
        public static void SetBits(Form form, Bitmap bitmap)
        {
            //if (!haveHandle) return;
            if (!Bitmap.IsCanonicalPixelFormat(bitmap.PixelFormat) ||
                !Bitmap.IsAlphaPixelFormat(bitmap.PixelFormat))
            {
                throw new ApplicationException("The picture must be " +
                                               "32bit picture with alpha channel");
            }
            IntPtr oldBits  = IntPtr.Zero;
            IntPtr screenDC = Win32.GetDC(IntPtr.Zero);
            IntPtr hBitmap  = IntPtr.Zero;
            IntPtr memDc    = Win32.CreateCompatibleDC(screenDC);

            try
            {
                Win32.Point         topLoc     = new Win32.Point(form.Left, form.Top);
                Win32.Size          bitMapSize = new Win32.Size(bitmap.Width, bitmap.Height);
                Win32.BLENDFUNCTION blendFunc  = new Win32.BLENDFUNCTION();
                Win32.Point         srcLoc     = new Win32.Point(0, 0);
                hBitmap                       = bitmap.GetHbitmap(Color.FromArgb(0));
                oldBits                       = Win32.SelectObject(memDc, hBitmap);
                blendFunc.BlendOp             = Win32.AC_SRC_OVER;
                blendFunc.SourceConstantAlpha = 255;
                blendFunc.AlphaFormat         = Win32.AC_SRC_ALPHA;
                blendFunc.BlendFlags          = 0;
                Win32.UpdateLayeredWindow(form.Handle, screenDC, ref topLoc, ref bitMapSize,
                                          memDc, ref srcLoc, 0, ref blendFunc, Win32.ULW_ALPHA);
            }
            finally
            {
                if (hBitmap != IntPtr.Zero)
                {
                    Win32.SelectObject(memDc, oldBits);
                    Win32.DeleteObject(hBitmap);
                }
                Win32.ReleaseDC(IntPtr.Zero, screenDC);
                Win32.DeleteDC(memDc);
            }
        }