【问题标题】:Screen Capture in PNG Format Works, but not BMP FormatPNG格式的屏幕截图有效,但不是BMP格式
【发布时间】:2015-07-24 05:37:09
【问题描述】:

我正在使用下面的代码来捕获正在运行的游戏的屏幕

public static Bitmap CaptureScreen()
{
    DxScreenCapture cap = new DxScreenCapture();
    var surface = cap.CaptureScreen();

    Bitmap png;
    using (DataStream stream = Surface.ToStream(surface, ImageFileFormat.Bmp))
    {
        png = new Bitmap(stream);
        png.Save(@"C:\Temp\MyFile.bmp");
    }

    return png;
}

保存为ImageFileFormat.Bmp时,保存的文件全黑。如果我将格式更改为ImageFileFormat.Png(并将文件扩展名更改为.png),图像保存得很好。

为什么我可以保存为 PNG 格式,但不能保存为 BMP 格式?

【问题讨论】:

    标签: c# directx slimdx


    【解决方案1】:

    这段代码应该可以工作(见complete enum):

    png.Save(@"C:\Temp\MyFile.bmp", ImageFormat.Bmp)
    

    【讨论】:

    • 奇怪,只是指定 ImageFormat.Bmp 确实会导致它正确保存。我天真地认为它会从 DataStream 中正确解释(就像在 PNG 的情况下一样)。通过这项工作,以下行 Bitmap rgn = png.Clone(new Rectangle(911, 170, 32, 14), png.PixelFormat) 将引发 OutOfMemoryException。指定区域显然在png 的范围内。有什么想法吗?
    猜你喜欢
    • 2017-03-06
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多