我可能在想这一切都错了,所以请让我首先说明目标:我想通过将它们异或在一起来比较两个图像,然后将结果保存(不显示)为文件。实际上,我想平均所有位值以获得百分比匹配,但这部分并不难。
所以BitBlt(还记得 BitBlt 吗?)有一个名为 SRCINVERT 的 ROP 正是这样做的。并且速度极快。工作一种享受。但是......它需要一个源和目标 DC(设备上下文)来使用......您可以将位图SelectObject放入这些 DC,但您必须拥有 DC。
使用 CreateCompatibleDC(0) 可以轻松制作 DC;甚至 CreateDC(L"DISPLAY", NULL, NULL, NULL); 但是……这些是基于当前硬件显示器的像素深度、大小等。{编辑:没有,CreateCompatibleDC(0); 从选择的位图中获取所有内容,我只是实际上并没有使用它。}而且我不在乎,我想使用像素深度等...我正在加载位图的文件从。其实这是一个命令行程序;它永远不会有窗户。编辑:但是因为 DC 是用于实际屏幕的,所以在使用 CreateDC(L"DISPLAY", NULL, NULL, NULL) 时,我会在将图像保存到文件之前在显示器上看到图像(覆盖桌面)。
我卡住了吗?我必须找到另一个图形库来执行我的 XOR 函数吗?或者有没有办法使用BitBlt?更一般地说,有没有办法用当前系统上不存在的 DC 来做 GDI 或 GDIPlus 类型的东西?对于处理图像文件而不必显示结果的程序来说,这不是一件非常有用的事情吗?