【发布时间】:2012-03-13 22:34:06
【问题描述】:
我一直在尝试使用 SetPixelV for windows 来直接在屏幕上显示图像,我相信你知道它慢得让人难以忍受,而且对于我不想用它的东西来说太慢了。谁能指出我如何直接显示在屏幕上(而不是在窗口中)的正确方向,这比 SetPixelV 更快? (不必独立于平台)
【问题讨论】:
-
你总是必须在一个窗口上绘图——桌面本身就是一个窗口。
-
阅读 MSDN 上的this article(尤其是最后一段)。
-
@MarkRansom:这是一种奇怪的看待方式。有一个代表桌面的窗口句柄,但这并不妨碍您“直接”绘制到“屏幕”。您可以获取屏幕或显示设备的设备上下文,并使用设备上下文函数直接绘制到该设备上下文,包括
BitBlt()。 -
@AndréCaron,我一直认为 GetDC(NULL) 只是为桌面返回了一个 DC。刚刚玩了Spy++,发现真相有点复杂,所以收回之前说的话。
-
尽管所有这些都在谈论如何访问虚拟屏幕设备,但我认为这不是这个问题的意义所在。这个问题的前提是
SetPixelV已经实现了“直接在屏幕上显示图像”的预期目标。问题是关于速度,而不是目的地。
标签: c++ c windows desktop pixel