C++ Win32 GDI double buffering
C++ Win32 GDI double buffering
您能否为此示例代码提供实现双缓冲的最简单方法(以防止闪烁):
HWND hwnd = FindWindow(0, "Untitled - Notepad");
HDC hDC_Desktop = GetDC(hwnd);
...
while( )
{
RECT rect = { 10, 10, 10 + 50, 10 + 50 };
FillRect(hDC_Desktop, &rect, ColorBrush);
InvalidateRect (hwnd, NULL, TRUE);
}
它"闪烁"的原因是目标窗口失效并且正在重新绘制。 由于它不是您的窗口 - 您不一定可以控制它。
如果这是您自己的窗口,则有一个简单的策略可以加快绘制速度并减少闪烁:使用内存 DC 绘制和捕获WM_ERASEBKGND以抑制背景重绘。
深入解释和修复策略(在应用程序的窗口中):http://www.catch22.net/tuts/win32/flicker-free-drawing
如果您打算在另一个应用程序上绘制,我是否可以建议在该应用程序之上创建一个窗口并在此基础上绘制。
相关文章:
- C++在数学计算中将double转换为int
- 在c++中为double类型的数组创建一个unique_ptr
- vector<vector<double>> to mxArray using memcpy
- (double) 和 double() 之间的区别
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- C++ Version Of Double.longBitsToDouble
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- 为什么 nlohmann/json 序列化 "null" 而不是在 double 上"0"?
- 使用 std::vector<double> 访问由 std::unique_ptr<double[2] 管理的数据>
- 将 std::vector<double> 从 C++ 包装到 C 以在 Swift 中使用
- 错误:无法将"<lambda(double)>"转换为"double(*)(double)"
- 如何正确将"strings"转换为"double"?
- 如何在<double>矢量中创建复杂类型的模板<T>?
- "double* grade"、"double *grade"和"double* fn()"有什么区别?
- 在不损失精度的情况下将double从C++传输到python
- 重复使用预分配的向量<复杂<double>>作为<double>长度两倍的向量
- C++ Win32 GDI double buffering
- C++/WinAPI GDI+ double buffering
- GDI+ Double Buffering