以winform预览屏幕截图图像

本文关键字:屏幕截图 图像 winform | 更新日期: 2023-09-27 18:28:25

我正在制作一个狙击工具。我有了它,我的程序可以用来用鼠标画一个矩形,并保存图像。现在我要做的是将生成的图像转移到一个图片框中,向用户显示他们在决定保存之前刚刚捕捉到的内容或其他内容。

有没有办法让我做到这一点?

到目前为止,我的屏幕捕获代码将捕获的图像保存到剪贴板,并在我的ScreenCapture类中找到以下代码:

 public static bool saveToClipboard = true;
     public static void CaptureImage(bool showCursor, Size curSize, Point curPos, Point SourcePoint, Point DestinationPoint, Rectangle SelectionRectangle, string FilePath, string extension)
     {
         using (Bitmap bitmap = new Bitmap(SelectionRectangle.Width, SelectionRectangle.Height))
         {
             using (Graphics g = Graphics.FromImage(bitmap))
             {
                 g.CopyFromScreen(SourcePoint, DestinationPoint, SelectionRectangle.Size);
                 if (showCursor)
                 {
                     Rectangle cursorBounds = new Rectangle(curPos, curSize);
                     Cursors.Default.Draw(g, cursorBounds);
                 }
             }
             if (saveToClipboard)
             {
                 Image img = (Image)bitmap;
                 Clipboard.SetImage(img);
             }

         }
     }

以前有人做过这样的事吗?此外,是否可以让图片框自动调整大小,以便使用屏幕捕获大小而不是图片框?

更新

除了下面的一些评论之外,我一直在尝试保存我在上面的类中存储的图像,并将其传递到图片框中。但当我这样做的时候什么都没有显示。我一直在使用的代码是这样的:

保持在表格上1.cs:

   public void SetImage(Image img)
    {
        imagePreview.Image = img;
    }

在截屏类中:

       if (saveToClipboard)
        {
          Image img = (Image)bitmap;
          ControlPanel cp = new ControlPanel();
          cp.SetImage(img);
          Clipboard.SetImage(img);
        }

以winform预览屏幕截图图像

ControlPanel cp = new ControlPanel();
cp.SetImage(img);

这不起作用,因为您需要访问正在使用的父窗体,而不是创建它的新实例。

看看这个问题的答案,创建一个简单的自定义事件,但将一个Image添加到他们创建的ProgressEventArgs中。然后在你的主表单上,订阅活动并更新图片框。