【问题标题】:Racket GUI, drawing text vertically, issues with "angle" argument球拍 GUI,垂直绘制文本,“角度”参数问题
【发布时间】:2015-03-15 15:35:48
【问题描述】:

我正在使用 Racket GUI 在我的程序窗口中写入文本。 到目前为止,我只需要水平绘制文本。但是现在我会想要垂直书写文字。我在文档中看到,当我们将消息“draw-text”发送到绘图上下文时,我们可以提供一个“角度”参数

这是我绘制文本的小功能:

(define (draw-text text fontsize x y color [rotate-angle 0.0]) 
  (when (string? color) 
    (set! color (send the-color-database find-color color)))
  (send bitmap-dc set-font (make-object font% fontsize 'default))
  (send bitmap-dc set-text-foreground color)
  (send bitmap-dc draw-text text x y [angle rotate-angle])
  (update-callback))

但是,当我使用示例调用“绘制文本”过程时,给定一个 90° 的角度(这样文本将是垂直的),它不会改变任何东西。 它只是像以前一样水平显示。

有人知道出了什么问题吗?

【问题讨论】:

    标签: user-interface text racket angle


    【解决方案1】:

    从示例中看不清楚,但您是否记得将 90 度转换为弧度?惯例是 360 度与 2pi 弧度相同。或者除以 360,我们得到 1 度是 2pi/360 弧度。

    乘以90,结果是90度为90*2*pi/360 = 180pi/260 = pi/2 ~ 1.5707963267948966。也就是说,要将文本旋转 90 度,请使用 1.5707963267948966 作为旋转角度。

    还有(send bitmap-dc draw-text text x y [angle rotate-angle]) 应该是

    (send bitmap-dc draw-text text x y combine? offset? angle])
    

    例如:

    (send bitmap-dc draw-text "A text" 100 100 #t 0 1.570])
    

    【讨论】:

    • 谢谢!问题是我没有使用“组合?”和“偏移”参数,我认为它们是可选的。现在可以了。
    • 它们是可选的,但是如果有更多的可选参数,你需要在你需要的那个之前的所有参数。例如,假设 foo 有可选参数 x 和 y 写成(foo [x y])。现在在(foo 3) 中,3 是 x 还是 y?这里 3 是一个 x 值。所以如果 y=3 我需要写(foo 3 4)
    • 还要注意球拍/数学有一个内置的degrees->radians函数。
    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2012-03-04
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多