0

我一直在研究Paul Hudak的《Haskell School of Expression 》一书,并使用其相关的基于 gtk 的图形库 Graphics.SOE.Gtk(文档链接)进行小型 2D 绘图实验。

然而,这个库是非常基础的,只有真正具有绘制形状的能力。目前,我正在编写一些需要特定 GUI 小部件(例如按钮和文本框)的程序。我的问题是:是否可以将 SOE 库的绘图功能与gtk2hs中的 GUI 小部件一起使用?例如,能够编写一个程序,我可以在其中单击一个按钮,该按钮会导致程序在同一窗口的另一个容器中绘制三角形。

我已经在网上搜索了一种方法来做到这一点,但大多数教程建议使用 cairo 使用 Gtk 进行任何图形绘制;SOE图形的API看起来是一个相对独立的东西。

4

1 回答 1

2

不,没有一种真正有意义的方式来soegtk定期gtk进行互动。原因是soegtk保持其所有数据类型都是抽象的;从“使实现者可以轻松地更改实现而不更改接口”的角度来看,这是一个很好的做法,但从“我只是一个想要以接口的方式处理事物的用户”来看,这可能会有点限制不要承诺允许”的观点。

你可以:

  • 复制soegtk包中单个模块的文本,并调整导出行以导出更多内容,并愉快地打破你不喜欢的任何抽象边界
  • 无意义的互动;例如,让您的gtk按钮打开一个soegtk包含感兴趣图形的窗口
  • 学习不同的绘图库,例如,cairodiagrams
于 2013-01-05T21:14:09.430 回答