Exemplo n.º 1
0
        private void SetBitmap(Bitmap img, byte opacity)
        {
            IntPtr screenDc  = GetDC(IntPtr.Zero);
            IntPtr memDc     = CreateCompatibleDC(screenDc);
            IntPtr hBitmap   = IntPtr.Zero;
            IntPtr oldBitmap = IntPtr.Zero;

            try {
                hBitmap   = img.GetHbitmap(Color.FromArgb(0));
                oldBitmap = SelectObject(memDc, hBitmap);

                Size   size        = new Size(img.Width, img.Height);
                Point  pointSource = new Point(0, 0);
                Point  topPos      = new Point(Left, Top);
                BlendF blend       = new BlendF();
                blend.BlendOp             = AC_SRC_OVER;
                blend.BlendFlags          = 0;
                blend.SourceConstantAlpha = opacity;
                blend.AlphaFormat         = AC_SRC_ALPHA;

                UpdateLayeredWindow(this.Handle, screenDc, ref topPos, ref size,
                                    memDc, ref pointSource, 0, ref blend, LWA_ALPHA);
            }
            finally {
                ReleaseDC(IntPtr.Zero, screenDc);
                if (hBitmap != IntPtr.Zero)
                {
                    SelectObject(memDc, oldBitmap);
                    DeleteObject(hBitmap);
                }
                DeleteDC(memDc);
            }
        }
Exemplo n.º 2
0
        private void SetBitmap(Bitmap img, byte opacity)
        {
            if (img.PixelFormat != PixelFormat.Format32bppArgb)
            {
                MessageBox.Show("Image format not accepted." + "\r\n\r\n" +
                                "Please use one of the allowed formats:" + "\r\n" +
                                " -- 32bit alphablended (rgba) .PNG",
                                "Oy, bakayaro.", MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation);
                this.Close(); return;
            }

            IntPtr screenDc  = GetDC(IntPtr.Zero);
            IntPtr memDc     = CreateCompatibleDC(screenDc);
            IntPtr hBitmap   = IntPtr.Zero;
            IntPtr oldBitmap = IntPtr.Zero;

            try {
                hBitmap   = img.GetHbitmap(Color.FromArgb(0));
                oldBitmap = SelectObject(memDc, hBitmap);

                Size   size        = new Size(img.Width, img.Height);
                Point  pointSource = new Point(0, 0);
                Point  topPos      = new Point(Left, Top);
                BlendF blend       = new BlendF();
                blend.BlendOp             = AC_SRC_OVER;
                blend.BlendFlags          = 0;
                blend.SourceConstantAlpha = opacity;
                blend.AlphaFormat         = AC_SRC_ALPHA;

                UpdateLayeredWindow(this.Handle, screenDc, ref topPos, ref size,
                                    memDc, ref pointSource, 0, ref blend, LWA_ALPHA);
            }
            finally {
                ReleaseDC(IntPtr.Zero, screenDc);
                if (hBitmap != IntPtr.Zero)
                {
                    SelectObject(memDc, oldBitmap);
                    DeleteObject(hBitmap);
                }
                DeleteDC(memDc);
            }
        }
Exemplo n.º 3
0
        private void SetBitmap(Bitmap img, byte opacity)
        {
            if (img.PixelFormat != PixelFormat.Format32bppArgb)
            {
                MessageBox.Show("Only accepts 32bit alphablended .png images");
                System.Diagnostics.Process.GetCurrentProcess().Kill();
            }

            IntPtr screenDc  = GetDC(IntPtr.Zero);
            IntPtr memDc     = CreateCompatibleDC(screenDc);
            IntPtr hBitmap   = IntPtr.Zero;
            IntPtr oldBitmap = IntPtr.Zero;

            try
            {
                hBitmap   = img.GetHbitmap(Color.FromArgb(0));
                oldBitmap = SelectObject(memDc, hBitmap);

                Size   size        = new Size(img.Width, img.Height);
                Point  pointSource = new Point(0, 0);
                Point  topPos      = new Point(Left, Top);
                BlendF blend       = new BlendF();
                blend.BlendOp             = AC_SRC_OVER;
                blend.BlendFlags          = 0;
                blend.SourceConstantAlpha = opacity;
                blend.AlphaFormat         = AC_SRC_ALPHA;

                UpdateLayeredWindow(this.Handle, screenDc, ref topPos, ref size,
                                    memDc, ref pointSource, 0, ref blend, LWA_ALPHA);
            }
            finally
            {
                ReleaseDC(IntPtr.Zero, screenDc);
                if (hBitmap != IntPtr.Zero)
                {
                    SelectObject(memDc, oldBitmap);
                    DeleteObject(hBitmap);
                }
                DeleteDC(memDc);
            }
        }
Exemplo n.º 4
0
 public static extern bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref Point pptDst, ref Size psize, IntPtr hdcSrc, ref Point pprSrc, Int32 crKey, ref BlendF pblend, Int32 dwFlags);