haskell - Haskell 中的图形转换句柄

标签 haskell graphics gtk image-manipulation cairo

我正在尝试使用 gtk2hs 和 cairo 在 Haskell 中创建基于 GUI 和图形的应用程序。目前我正在开发一个程序,用户可以在该程序中在屏幕上创建和操作简单的几何形状。

我希望用户能够执行的三种操作是:平移、旋转和缩放。理想的实现方式是在大多数图像处理程序(例如 Photoshop)中提供转换句柄:

enter image description here

(即可以通过拖动对象内部的某处来平移对象,通过拖动适当的白框来缩放对象,并通过单击并沿对象框外部的旋转方向拖动来旋转对象)

我在 gtk 或 cairo 文档中找不到执行此“开箱即用”操作的简单方法,并且无法通过在 google 上搜索找到合适的库。有谁知道 Haskell API 允许我以这种方式操作图形,或者如果失败的话,知道我将如何在 Haskell 中实现我自己的此类功能版本?

最佳答案

没有内置的小部件可以实现此目的;您必须通过绘制所有适当的元素(例如实际形状、边界框或类似元素、边界框的角和边缘上的矩形等)来自己构建它,并通过检查事件是否落下来处理鼠标事件是否在这些元素上。这应该不难……尽管可能有点乏味。

关于haskell - Haskell 中的图形转换句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17652794/

相关文章:

ruby - Ruby 绘图库

gtk - 使 GTK 输入框更小

haskell - 如何使用 megaparsec 获取 AST 节点的源范围?

linux - cabal 安装 hoogle 不工作

java - 最小化窗口时自动重绘

javascript - 在 javascript/typescript 中绘制形状并填充颜色

c - 使用 C 函数 notify_notification_update() 的段错误

python - 如何在 python 3.4 中使用 Gtk3 在背景图像上插入小部件?

c++ - 使用 ffi 将 C++ 数据类型导入 haskell

haskell - "MonadIO m"和 "MonadBaseControl IO m"之间有什么区别吗?