【问题标题】:How can I obtain device context (DC) in wxHaskell?如何在 Haskell 中获取设备上下文 (DC)?
【发布时间】:2014-06-07 10:10:39
【问题描述】:

我正在使用 wxHaskell 来显示简单 Haskell 游戏的 GUI。

我有一个问题:我正在编写简单游戏的 GUI 部分。当游戏状态更新时,GUI 模块的功能之一被调用并传递新的游戏状态参数。现在必须更新 gui。 GUI 是几个矩形,GUI 的更新只是在旧的矩形上画一些新的矩形。

但是,要绘制矩形,我需要将设备上下文 DC 作为参数传递。由于包含我的矩形的面板生成了“onpaint”事件,因此完成了电路板的第一次绘画。在 Paint 处理程序上必须有签名:

DC a -> Rect -> IO ()

当事件发生时,通过 dc 并显示板。

我的问题:如何获得 DC?

或替代问题:如果事件处理程序需要特定签名 - 我如何将其他参数传递给处理程序?

【问题讨论】:

标签: haskell user-interface wxhaskell


【解决方案1】:


看看函数repaint :: w -> IO ()。您传入要重新粉刷且不需要直流电的框架/面板。我通过以下pdf找到了该功能。非常好的wx教程。作者也在构建一个简单的游戏。可能会有所帮助。 http://web.archive.org/web/20120211184204/http://legacy.cs.uu.nl/daan/download/papers/wxhaskell.pdf

【讨论】:

  • 这正是我使用的,但我认为我的方法从一开始就是错误的。这是我的第一个 Haskell 项目,我仍然想到 OOP 而不是纯函数式编程。后来我重新开始并得到了更好的结果。谢谢你的回答!
猜你喜欢
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 2013-08-22
  • 2016-08-22
  • 2015-06-01
  • 2016-02-28
  • 2014-08-22
相关资源
最近更新 更多