仅在第二次测试

时间:2016-04-13 14:57:28

标签: c# bitmap imaging pixelformat

我需要使用PixelFormat.Format24bppRgb保存在Bitmap中的屏幕截图。我写了一个简单的类,并测试如下:

public class CaptureScreenInfo
{
    public Bitmap TakeScreenShot(int posLeft, int posTop, int posRight, int posBottom)
    {
        int width = posRight - posLeft;
        int height = posBottom - posTop;

        Bitmap bmp = new Bitmap(width, height, PixelFormat.Format16bppGrayScale);

        using (Graphics gr = Graphics.FromImage(bmp))
        {
            gr.DrawImage(bmp, new Rectangle(0, 0, width, height));
        }

        return bmp;
    }
}

单元测试:

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void RegularScreenShot()
    {
        CaptureScreenInfo csi = new CaptureScreenInfo();
        Bitmap bmp = csi.TakeScreenShot(0, 0, 800, 600);

        Assert.AreEqual(System.Drawing.Imaging.PixelFormat.Format24bppRgb, bmp.PixelFormat);
    }
}

奇怪的是,如果我将PixelFormat更改为其他所需的格式24bppRgb,则第一次测试将始终通过,并且仅在第二次测试(以及之后的每次测试)之后,我将获得失败。类似的,如果我改回Format24bppRgb,第一次测试将失败,接下来的测试将通过。

知道为什么吗?

编辑:根据Luaan的评论,我将代码更改为可复制/粘贴功能。显然,您需要自己添加所有必要的参考。

0 个答案:

没有答案