【问题标题】:Does win32 TextOut() complete asynchronously?win32 TextOut() 是否异步完成?
【发布时间】:2012-05-25 11:53:18
【问题描述】:

这应该是一个简单的 google 或 MSDN 答案 - 但我在搜索中遇到了不足。我有一个使用 GDI 进行大量绘图的小型 win32 应用程序。我观察到,当我在我的内存设备上下文中放置一个带有 TextOut() 的“标签”时,然后在 TextOut() 调用之后立即使用 BitBlt,文本会间歇性地显示,闪烁进出。 BitBlt() 在另一个线程中,但我有一个关键部分来防止复制工作中的图形。当我将 TextOut() 放在流程中较早的位置时,即不靠近 BitBlt() 时,它总是会出现。我能想到的是 TextOut() 在完成之前返回.. 谁能指出我的文档或提出另一个理论?

仅供参考 - 我已经签出: http://msdn.microsoft.com/en-us/library/dd145133(v=vs.85).aspx

谢谢!

【问题讨论】:

  • 我强烈建议您查看 direct2d(如果您很聪明,请查看 3d)并忘记已弃用的 GDI
  • 不是真正的问题 Ulterior... 问题是 TextOut() 是否异步完成。我们有使用 DirectDraw、Direct3D、GDI 的应用程序......每个都有自己的位置。

标签: winapi graphics gdi


【解决方案1】:

是的。 GdiFlush() 是强制所有 GDI 更新到视频适配器的调用。

还有很多其他射脚的方法。 GDI 根本不是线程安全的,所以我猜不要期待奇迹。

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2015-11-26
    相关资源
    最近更新 更多