【发布时间】:2010-08-26 04:39:33
【问题描述】:
我想重绘窗口的一部分,而不是全部。我不知道该怎么做。我使用的是 win32,请不要使用 mfc........
提前致谢
// create rect structure
RECT rect2;
rect2.left=0;
rect2.top=0;
rect2.right=225;
rect2.bottom=300;
// calling invalidateRect when left mouse button is donw
case WM_LBUTTONDOWN:
InvalidateRect(hWnd, &rect2, false);
break;
【问题讨论】:
-
简单回答:不要将 GDI 用于游戏。无论您多么小心地尽量减少重绘工作,OpenGL 或 DirectX 几乎肯定会做得更好。
-
@Jerry Coffin:实际上在某些游戏中使用 GDI 还是有充分理由的。如果性能不如对非常旧的系统或具有过时显卡驱动程序的系统的可移植性重要,或者如果您无论如何都在软件中使用 2D,GDI 仍然是一个可行的选择。例如,我创建了一个完全基于 GDI 的休闲游戏游戏引擎,但也针对休闲游戏中常见的许多场景进行了优化。
-
@Adrian:如果您对此感到满意,那就太好了。虽然与旧硬件/软件的兼容性存在一些限制,但我在 NT 3.5 下非常成功地在硬件上使用了 OpenGL,这些硬件太旧了,您在博物馆外几乎找不到它了。
-
@Jerry Coffin:是的,但是如果您的软件传播非常广泛,那么总会有用户使用错误和/或过时的显卡驱动程序。使用 GDI 而不是 OpenGL 可以让您轻松解决这个问题。出于同样的原因,Popcap 的游戏引擎也使用 GDI 后备模式。
-
c++ repaint part of window 的可能重复项
标签: c++ visual-c++ winapi window