gpt4 book ai didi

c - 使用 BitBlt 捕捉桌面像素颜色

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:32 25 4
gpt4 key购买 nike

现在我正在使用 GetPixel() 从桌面检索大约 64 个像素以获得它们的颜色。我读到有关 GetPixel() 的信息很慢,但我认为这对几个像素并不重要,但每次我运行例程都需要 1.5 秒。在做了一些研究之后,我得出的结论是 bitblt 似乎是我正在寻找的东西。我想要做的是抓取桌面的一个定义区域(包括所有窗口),然后抓取给定偏移处的像素颜色。这是我现在正在做的事情:

     for (y=0;y<=7;y++) {
for (x=0;x<=7;x++) {
//gameScreen is a struct containing the offset from the top left of the monitor
//to the area of the screen I need
grid[y][x]=getColor(gameScreen.x+((x*40)+20),gameScreen.y+((y*40)+20));
}
}

int getColor(int x, int y) {
//create new point at given coordinates
POINT point;
point.x=x;
point.y=y;
//convert to logical points
DPtoLP(desktopDC,&point,2);
//get pixel color
//desktopDC is an HDC from GetWindowDC(GetDesktopWindow())
int pixel=GetPixel(desktopDC,point.x,point.y);
return pixel;

我找到了相当数量的教程和文档,但作为 Windows API 的新手,它们对我来说意义不大。谢谢!

最佳答案

你可能想要:

  • 创建兼容DC
  • 创建兼容位图
  • SelectObject,保存原始位图
  • 比特币
  • 获取DIBits
  • SelectObject,放回原来的位图
  • 删除位图
  • 删除DC

如果您定期执行此操作,那么您应该只执行一次前三个步骤,重复 BitBltGetDIBits,并在程序完成时执行最后三个步骤。

关于c - 使用 BitBlt 捕捉桌面像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4555279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com