GetPixel优化winapi

gfa*_*art 1 c winapi screenshot gdi bmp

我想把我的"屏幕"保存在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);
Run Code Online (Sandbox Code Playgroud)

Rom*_* R. 5

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

请参阅在Windows中执行全屏抓取以获取代码段.