小编Joh*_*ohn的帖子

C#截图错误?

我使用以下代码截取屏幕截图:

var rc = SystemInformation.VirtualScreen;
Bitmap bmp = new Bitmap(rc.Width, rc.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(rc.Left, rc.Top, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);
Run Code Online (Sandbox Code Playgroud)

现在这种方法非常有效并且很容易使用,但是我总是在一些屏幕截图中遇到小的"白点".当图像大量出现时,这可能非常烦人并使图像失真.

我设法缩小了问题的范围,当我尝试截取以下图片的屏幕截图时,会发生错误:

导致错误的图像

屏幕截图的输出如下所示:

窃听器

你怎么解决这个问题?出于好奇,这是如何解释的?

在我的测试环境中,屏幕截图根本没有保存.我直接使用它与以下代码:

pictureBox1.Image = bmp;
Run Code Online (Sandbox Code Playgroud)

tl; dr我试图截取屏幕截图,一些像素被白色替换并扭曲结果.

非常感谢你提前.

编辑:事实证明,位图使区域透明(白色来自表单的背景颜色,感谢发现这个消费者!)

不同背景的bug

但显然你可以在第一张照片中清楚地看到; 我不是想捕捉任何透明的内容.为什么这样做?

EDIT2:

这是我用来选择我的截图的全班:

public partial class SnippingTool : Form
{
    public static Image Snip()
    {
        var rc = SystemInformation.VirtualScreen;

        Bitmap bmp = new Bitmap(rc.Width, rc.Height);
        Graphics g = Graphics.FromImage(bmp);
        g.CopyFromScreen(rc.Left, rc.Top, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);

        var snipper = new SnippingTool(bmp);

        if (snipper.ShowDialog() == DialogResult.OK)
        {
            return …
Run Code Online (Sandbox Code Playgroud)

c# screenshot

14
推荐指数
1
解决办法
1003
查看次数

标签 统计

c# ×1

screenshot ×1