gpt4 book ai didi

c++ - 最佳绘图方法

转载 作者:太空狗 更新时间:2023-10-29 23:08:58 27 4
gpt4 key购买 nike

我在 wxWidgets 中开发了一个应用程序,我在其中使用位图进行绘图。因此,当我的应用程序第一次启动时,它会从文件中读取坐标并相应地绘制线条。该应用程序还从网络接收 UDP 数据包,UDP 数据包还包含一些必须在屏幕上绘制的 x y 坐标信息,因此当收到数据包时我重绘位图图像,并在屏幕上显示,我也需要刷新位图在鼠标移动事件上,因为在鼠标移动时有一些我必须在屏幕上绘制的新绘图。

所有这些都会增加运营成本并降低我的 GUI 速度。因此,请向我推荐一些您认为在这种情况下可能有效的替代绘图方法。

我在谷歌上搜索了OpenGL的选项,但是由于时间紧迫我不想使用openGL,因为我没有任何OpenGL的经验。

最佳答案

听起来您的问题好像是您的 GUI 对用户输入没有响应,因为应用程序正忙于重绘显示。这类问题有几个通用的解决方案。

  1. 使用工作线程在内存中绘制位图。虽然这正在进行中,但主线程可以继续与用户交互。重绘位图后,工作线程向主线程发送信号,然后主线程将完成的位图复制到屏幕上 - 这非常快。

  2. 使用主线程将位图直接绘制到屏幕上,但在绘制代码中调用 wxApp::Yield()。这将允许 GUI 在漫长的绘图过程中保持对用户的响应。

选项 1 是“最好的”,尤其是在多核机器上运行时,但保持两个线程同步并防止它们之间发生争用是一项挑战,除非您在多线程设计方面拥有丰富的经验。选项 2 简单得多,但您仍然需要注意用户交互不会在第一个绘图过程完成之前启动另一个绘图过程。

关于c++ - 最佳绘图方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7357780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com