0

我想知道当 Windows 放大镜工具在全屏模式下运行时是否可以捕获整个屏幕视图。本质上,我正在寻找的是当我用眼睛看屏幕上的某个点时,只有屏幕上的某个点显示在我的显示器上,我希望能够打印整个屏幕没有关闭放大镜的原始屏幕。不知道如何比这更好,更清楚地表达它。我知道可以通过Graphics类获取屏幕像素信息,如下所示:

this.graphics.Clear(Color.Black);
this.graphics.CopyFromScreen(pictureBoxPoint.X, pictureBoxPoint.Y, 0, 0, size);

但这并不排除放大镜对屏幕的影响,只是在用户看到的时候抓取它。理想情况下,我希望能够抓住整个屏幕,因为如果放大镜工具不是仅放大一部分,则应该可以看到它,如果这有意义的话。整个屏幕空间,即使只有一部分可见。

我快速浏览了Magnification API文档页面,但我不知道这是否真的是我应该看的地方。还有什么我可以做的吗?如果有人指出我正确的方向,我将不胜感激,因为我似乎在绕圈子。

非常感谢!

4

1 回答 1

0

看看 github 项目karna-magnification,这将允许您将 windows 窗体对象放入视图门户并放大光标下的任何内容。要捕获放大倍数,您只需要捕获表单的内容。引用 github 项目后,在要用作放大镜视图面板的表单的构造函数中,添加

using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Magnifier mg = new Magnifier(this);
        }
    }
}

从那里添加代码以使用表单的图形上下文来捕获图像。那部分我将留给你。

于 2020-11-07T12:26:12.727 回答