在桌面上选择区域矩形

时间:2012-05-08 18:53:06

标签: c# .net graphics screenshot

我正在尝试在C#.NET中创建一个模仿Windows 7剪切工具的应用程序,在运行应用程序时(或通过特定的按键或我选择启动它),用户可以无论哪个窗口都有焦点,在屏幕上绘制一个矩形,以捕获桌面的矩形快照。

我已经知道如何利用Graphics.CopyFromScreen()方法来保存给定特定矩形的快照,但是我难倒的地方是实际的矩形选择以及如何从中获取边界。

2 个答案:

答案 0 :(得分:7)

Code Project上的TeboScreen: Basic C# Screen Capture Application就是这样做的。

  

按住鼠标左键,用户绘制一个矩形,指定他们想要捕捉的屏幕部分。 ... mouse_Move事件用于决定用户是在绘制,拖动(移动)还是调整选择区域的大小。

答案 1 :(得分:1)

用户实际上并不在屏幕上绘制矩形,而是在捕获的图像上绘制。用户调用您的工具时需要发生的事件序列是:

  1. 捕获整个桌面
  2. 创建一个屏幕大小的无边框窗口(或跨越所有屏幕的窗口,可能使用此方法here)并设置映射到屏幕位置/尺寸的单独图像到各自的屏幕截图。
  3. 允许用户使用代码here在表单上选择橡皮圈。
  4. 用户完成选择区域后,请创建与用户选择一样大的位图。
  5. 查找用户矩形与图像的交叉点
  6. 将这些区域逐个复制到您在步骤4中创建的图像。
  7. 保存此图片。
  8. 欢呼雀跃。