コード例 #1
0
ファイル: ScreenData.cs プロジェクト: billyprice1old/server
        public static ScreenModel LocalScreen()
        {
            var screenModel = new ScreenModel
            {
                Rectangle    = Rectangle.Empty,
                ScreenBitmap = null
            };

            // Capture a new screenshot.
            //
            NewBitmap = CaptureDesktop();

            lock (NewBitmap)
            {
                if (NewBitmap == null)
                {
                    return(null);
                }
                if (PrevBitmap != null)
                {
                    screenModel.Rectangle = GetBoundingBoxForChanges(ref PrevBitmap, ref NewBitmap);
                    if (screenModel.Rectangle != Rectangle.Empty)
                    {
                        // Get the minimum rectangular area
                        //
                        //diff = new Bitmap(bounds.Width, bounds.Height);
                        screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat);
                        PrevBitmap = NewBitmap;
                    }
                }
                else
                {
                    // Create a bounding rectangle.
                    //
                    screenModel.Rectangle = new Rectangle(0, 0, NewBitmap.Width, NewBitmap.Height);

                    // Set the previous bitmap to the current to prepare
                    //	for the next screen capture.
                    //

                    screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat);
                    PrevBitmap = NewBitmap;
                }
            }
            GC.Collect();
            GC.WaitForPendingFinalizers();
            return(screenModel);
        }
コード例 #2
0
ファイル: ScreenData.cs プロジェクト: Ulterius/server
        public static ScreenModel LocalScreen()
        {
            var screenModel = new ScreenModel
            {
                Rectangle = Rectangle.Empty,
                ScreenBitmap = null
            };
            // Capture a new screenshot.
            //
            NewBitmap = CaptureDesktop();

            lock (NewBitmap)
            {
                if (NewBitmap == null)
                {
                    return null;
                }
                if (PrevBitmap != null)
                {
                    screenModel.Rectangle = GetBoundingBoxForChanges(ref PrevBitmap, ref NewBitmap);
                    if (screenModel.Rectangle != Rectangle.Empty)
                    {
                        // Get the minimum rectangular area
                        //
                        //diff = new Bitmap(bounds.Width, bounds.Height);
                        screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat);
                        PrevBitmap = NewBitmap;
                    }
                }
                else
                {
                    // Create a bounding rectangle.
                    //
                    screenModel.Rectangle = new Rectangle(0, 0, NewBitmap.Width, NewBitmap.Height);

                    // Set the previous bitmap to the current to prepare
                    //	for the next screen capture.
                    //

                    screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle, NewBitmap.PixelFormat);
                    PrevBitmap = NewBitmap;
                }
            }
            GC.Collect();
            GC.WaitForPendingFinalizers();
            return screenModel;
        }
コード例 #3
0
ファイル: ScreenData.cs プロジェクト: Ulterius/server
        public static  ScreenModel LocalAgentScreen(Bitmap image)
        { 
            var screenModel = new ScreenModel
            {
                Rectangle = Rectangle.Empty,
                ScreenBitmap = null
            };

            NewBitmap = image;
            if (NewBitmap == null)
            {
                return screenModel;
            }
            lock (NewBitmap)
            {
                if (PrevBitmap != null)
                {
                    screenModel.Rectangle = GetBoundingBoxForChanges(ref PrevBitmap, ref NewBitmap);
                    if (screenModel.Rectangle != Rectangle.Empty)
                    {
                        // Get the minimum rectangular area
                        //
                        //diff = new Bitmap(bounds.Width, bounds.Height);
                        screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle,
                            NewBitmap.PixelFormat);
                        PrevBitmap = NewBitmap;
                    }
                }
                else
                {
                    // Create a bounding rectangle.
                    //
                    screenModel.Rectangle = new Rectangle(0, 0, NewBitmap.Width, NewBitmap.Height);

                    // Set the previous bitmap to the current to prepare
                    //	for the next screen capture.
                    //

                    screenModel.ScreenBitmap = NewBitmap.Clone(screenModel.Rectangle,
                        NewBitmap.PixelFormat);
                    PrevBitmap = NewBitmap;
                }
            }
            GC.Collect();
            GC.WaitForFullGCComplete();
            return screenModel;
        }