Scheme 在球拍上画箭

Scheme 在球拍上画箭,scheme,racket,Scheme,Racket,如何在球拍(DrRacket)的框架中绘制箭头?例如,在两个对象之间:通过以下方式获得的圆和矩形: (send dc draw-ellipse 50 50 30 30) and (send dc draw-rectangle 200 200 30 6) 什么样的箭 对于简单的箭头,请直接使用 对于弯曲的箭头使用。 使用填充三角形作为简单箭头 如果你需要更漂亮的箭头形状, 一种选择是从中调整 您可以在MetaPict的文档中找到箭头的其他示例 带有的示例显示了如何使用MetaPict绘制状态

如何在球拍(DrRacket)的框架中绘制箭头?例如,在两个对象之间:通过以下方式获得的圆和矩形:

(send dc draw-ellipse 50 50 30 30) and (send dc draw-rectangle 200 200 30 6)
什么样的箭

  • 对于简单的箭头,请直接使用
  • 对于弯曲的箭头使用。 使用填充三角形作为简单箭头
如果你需要更漂亮的箭头形状, 一种选择是从中调整

您可以在MetaPict的文档中找到箭头的其他示例


带有的示例显示了如何使用MetaPict绘制状态机。

您可以使用Pict来完成此类操作

首先,定义PICT

(define pict-a (rectangle 40 40))

(define pict-b (circle 40))
然后将它们结合起来,使用rc find或lc find,这些程序将帮助您连接这些PICT

(define combined (hc-append 200 pict-a pict-b))
最后

> (pin-arrows-line 30 combined
                   pict-a rc-find
                   pict-b lc-find
                   #:start-angle (/ pi 11)
                   #:end-angle (- (/ pi 11))
                   #:solid? #f)
将产生以下结果:


如果这解决了您的问题,您可以在“告诉我们”中找到更多信息

连接两个节点的箭头,如定向图或Petri网中的箭头。有点像针线箭头,但在帧中。根据程序的目标,可能更容易绘制
pict
,然后将pict作为位图发送到帧,因为这样可以避免所有消息传递语义
pict
通常也更易于使用。我同意你的看法。但是我想在一个框架(GUI)上做同样的事情。这是可能的?我不习惯使用Racket的GUI,但我很确定你可以将图片发送到一个帧(?)并显示它。你能试试吗,大卫?正如我说的,我不习惯使用Racket的GUI,我以前从未这样做过,但由于Racket使用Lambda编程,你可以传递一个函数来生成pict并在以后显示它。