public AbstractOsMappingWidget CreateSurface(SystemWindow childSystemWindow)
        {
            AbstractOsMappingWidget newSurface = new WidgetForWindowsFormsBitmap(childSystemWindow);

            ((WidgetForWindowsFormsBitmap)newSurface).Init(childSystemWindow);
            return newSurface;
        }
Esempio n. 2
0
        public AbstractOsMappingWidget CreateSurface(SystemWindow childSystemWindow)
        {
            AbstractOsMappingWidget newSurface = new WidgetForWindowsFormsBitmap(childSystemWindow);

            ((WidgetForWindowsFormsBitmap)newSurface).Init(childSystemWindow);
            return(newSurface);
        }
Esempio n. 3
0
        public override void CopyBackBufferToScreen(Graphics displayGraphics)
        {
            WidgetForWindowsFormsBitmap aggBitmapAppWidget = ((WidgetForWindowsFormsBitmap)aggAppWidget);

            RectangleInt intRect = new RectangleInt(0, 0, (int)aggAppWidget.Width, (int)aggAppWidget.Height);

            aggBitmapAppWidget.bitmapBackBuffer.UpdateHardwareSurface(intRect);

            WidgetForWindowsFormsBitmap.copyTime.Restart();

            if (OsInformation.OperatingSystem != OSType.Windows)
            {
                //displayGraphics.DrawImage(aggBitmapAppWidget.bitmapBackBuffer.windowsBitmap, windowsRect, windowsRect, GraphicsUnit.Pixel);  // around 250 ms for full screen
                displayGraphics.DrawImageUnscaled(aggBitmapAppWidget.bitmapBackBuffer.windowsBitmap, 0, 0);                 // around 200 ms for full screnn
            }
            else
            {
                // or the code below which calls BitBlt directly running at 17 ms for full screnn.
                const int SRCCOPY = 0xcc0020;

                using (Graphics bitmapGraphics = Graphics.FromImage(aggBitmapAppWidget.bitmapBackBuffer.windowsBitmap))
                {
                    IntPtr displayHDC = displayGraphics.GetHdc();
                    IntPtr bitmapHDC  = bitmapGraphics.GetHdc();

                    IntPtr hBitmap    = aggBitmapAppWidget.bitmapBackBuffer.windowsBitmap.GetHbitmap();
                    IntPtr hOldObject = SelectObject(bitmapHDC, hBitmap);

                    int result = BitBlt(displayHDC, 0, 0, aggBitmapAppWidget.bitmapBackBuffer.windowsBitmap.Width, aggBitmapAppWidget.bitmapBackBuffer.windowsBitmap.Height, bitmapHDC, 0, 0, SRCCOPY);

                    SelectObject(bitmapHDC, hOldObject);
                    DeleteObject(hBitmap);

                    bitmapGraphics.ReleaseHdc(bitmapHDC);
                    displayGraphics.ReleaseHdc(displayHDC);
                }
            }
            WidgetForWindowsFormsBitmap.copyTime.Stop();
        }