gpt4 book ai didi

racket - 缩放编辑器 Canvas

转载 作者:行者123 更新时间:2023-12-05 07:25:20 25 4
gpt4 key购买 nike

我正在玩弄 racket 并计划实现一个节点编辑器(如果已经有一个请告诉我!)。主黑板是编辑器 canvas% 中的粘贴板%,现在我正在处理缩放功能。基本上我可以设置绘图上下文的比例来缩放它:

;; c 是我的 editor-canvas%
(发送(发送 c get-dc)设置比例 2 2)

然而,这只会缩放绘图调用,但事件坐标未更改,因此无法正确分派(dispatch)。

我正在寻找一些方法来转换调度过程中所有事件的坐标,但目前还没有找到任何有用的东西。有没有办法在 dispatch 过程中放置​​一个“变形金刚”?或者是否有其他解决方案来缩放整个 Canvas 并正确分配事件?

最佳答案

经过反复尝试,我想我几乎找到了一个解决方案(只是我目前最好的解决方案)。

我使用 (send (send c get-dc) set-scale 2 2) 调整显示比例。然后我使用pasteboard%interactive-adjust-mouseinteractive-adjust-move,和interactive-adjust-resize 覆盖坐标。 Racket GUI 框架没有提供在调度过程中操作事件的通用方法,但是 pasteboard% 提供了改变事件坐标的方法,而且它似乎可以工作。

另一方面,对于事件的任意修改,我发现覆盖小部件的 on-event 方法并调用 (super on-event modified-events) 或手动派发给 child ,如果你想改变派发顺序等等。

关于racket - 缩放编辑器 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54920755/

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