0

我正在开发用于捕获屏幕打印的小程序,我想以类似于 Win Snipping Tool 工作的方式来完成它。首先,我需要用 50% 的不透明度图层覆盖所有屏幕,然后使用鼠标绘制一个矩形并读取顶点坐标。老实说,我不知道如何咬这个。我尝试使用 win32api / gui,获得鼠标坐标很棒,但仍然无法绘制矩形。我的想法(其中之一)是(使用 PIL / ImageGrab)拍摄两个显示器的照片,放置一个叠加层并将它们作为全屏打印在所有窗口上,但我在这样做时失败了。另一个想法是使用 img 抓取并使用 BeeWare / Toga(我正在使用的 GUI 框架)全屏创建两个新窗口,但我找不到在第二个显示器上打开窗口的任何方法。任何想法和提示将不胜感激,

4

1 回答 1

0

嗯,它很容易使用tkinter。好的,这是我做截图应用时的原则:

  1. 用户按下按钮开始。
  2. 新建一个窗口,其宽度和高度应完全覆盖所有屏幕,并隐藏标题栏(如果必须实现,可以使用width=9999and height=9999)。
  3. 截取所有桌面的屏幕截图(您可以使用ImageGrab.grab((),all_screens=True))来执行此操作。
  4. 使屏幕截图显示在一个Canvas(我知道toga有这个小部件)。
  5. 启动鼠标侦听器线程并保存按下的位置。
  6. 当用户移动鼠标时,创建一个矩形(toga's Canvas有一个功能rect())。也许使用这个rect(pressed_x,pressed_y,move_x,move_y)。然后删除最后一个矩形(然后它总是只显示一个矩形)。
  7. 当用户释放他的鼠标时,保存释放的位置。并使用ImageGrab.grab((pressed_x,pressed_y,released_x,released_y),all_screens=True)裁剪选定的区域。
  8. 如果您想在应用程序界面中显示它。toga有一个名为ImageView.You 的小部件。您可以将图像放入其中。
于 2020-04-08T09:45:35.440 回答