示例#1
0
        static public Point GetZoomGaze()
        {
            ZoomBounds z       = zoomBounds;
            float      screenX = z.source.X + (smoothX - z.big.X) / z.zoomFactor;
            float      screenY = z.source.Y + (smoothY - z.big.Y) / z.zoomFactor;

            return(new Point((int)screenX, (int)screenY));
        }
示例#2
0
        public static void Zoom(bool autoClick = false)
        {
            ZoomBounds z = new ZoomBounds(gazeX, gazeY);

            zoomBounds = z;

            mainForm.Invoke((Action)(() =>
            {
                if (zoomForm == null)
                {
                    zoomForm = new Form();
                    zoomForm.Text = "Zoom";
                    zoomForm.FormBorderStyle = FormBorderStyle.None;
                    zoomForm.ShowInTaskbar = false;
                    zoomForm.TopMost = true;
                    //zoomForm.Opacity = 0.7f;
                    //zoomForm.TransparencyKey = Color.Red;
                    zoomForm.FormClosed += OnZoomFormClosed;

                    zoomPicture = new ZoomControl();
                    zoomPicture.Parent = zoomForm;
                    zoomPicture.Paint += ZoomFormPaint;
                }

                zoomForm.Width = z.big.Width;
                zoomForm.Height = z.big.Height;
                zoomPicture.Width = z.big.Width;
                zoomPicture.Height = z.big.Height;

                zoomForm.Hide();

                //lock (bitmapLock)
                {
                    if (zoomBitmap != null)
                    {
                        zoomBitmap.Dispose();
                        zoomBackground.Dispose();
                    }

                    zoomBitmap = new Bitmap(z.source.Width, z.source.Height);
                    zoomBackground = new Bitmap(z.screenW, z.screenH);
                }

                zoomForm.Show();
                zoomForm.Left = z.big.X;
                zoomForm.Top = z.big.Y;
                zoomStopwatch.Restart();
            }));

            state         = State.Following;
            zoomAutoClick = autoClick;
        }
示例#3
0
        static void ZoomFormPaint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            ZoomBounds z = zoomBounds;

            Graphics g = Graphics.FromImage(zoomBitmap);

            g.Clear(Color.Gray);
            g.CopyFromScreen(z.source.X, z.source.Y, 0, 0,
                             z.source.Size,
                             CopyPixelOperation.SourceCopy);

            float bX       = (smoothX - z.big.X) / z.zoomFactor;
            float bY       = (smoothY - z.big.Y) / z.zoomFactor;
            Pen   crossPen = zoomHighlight ? Pens.Red : Pens.Black;

            g.DrawLine(crossPen, bX - 10, bY, bX + 10, bY);
            g.DrawLine(crossPen, bX, bY - 10, bX, bY + 10);
            g.Dispose();

            // Other interpolation modes can get a very slow without hardware acceleration
            g = e.Graphics;
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
            g.DrawImage(zoomBitmap, 0, 0, z.big.Width, z.big.Height);
        }