【问题标题】:GetPixel optimisation winapiGetPixel优化winapi
【发布时间】:2012-06-25 04:51:04
【问题描述】:

我想将我的“屏幕”保存为 bmp;但我认为我做错了,因为这段代码真的很慢:

HDC Win = GetDC(NULL);
for (j = 0; j < y; j++)
  for (i = 0; i < x; i++)
    img->data[j][i] = GetPixel(Win, i, j);

【问题讨论】:

  • 定义“真的很慢”,即,究竟需要多长时间才能输入多大的输入以及您运行了多少次测试才能获得该数字?此外,除非您向我们提供编译器设置,否则性能比较是无关紧要的。也就是说...GetPixel 很慢。我会得到一个指向图像数据本身的指针并进行处理。
  • 我的分辨率为 1920*1080,这段代码需要 1 分钟,截图我发现这真的很慢

标签: c winapi screenshot gdi bmp


【解决方案1】:

CreateDIBSection 使用指向原始位的指针创建位图,BitBlt 从屏幕进入创建的位图。这比逐像素查询更快,并且您可以使用常规指针访问内存中的所有数据。

查看Performing full screen grab in windows 获取代码 sn-p。

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2012-03-27
    • 2016-01-08
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    相关资源
    最近更新 更多