2

在下面的程序中,我使用cairo-0.12.2. 不幸的是,当我使用该translate函数移动用户空间原点时,矩形被翻译但文本没有。

import Graphics.Rendering.Cairo

main = withSVGSurface "test.svg" 600 600 
  (`renderWith` draw)

draw = do
  color white
  rectangle 0 0 600 600
  fill
  newPath
  color black
  translate 300 300
  drawSortBox
  translate 200 200
  drawSortBox
  stroke

drawSortBox = do
  showText "V  Ʌ"
  a <- textExtents "V  Ʌ"
  rectangle (textExtentsXbearing a - 2) (textExtentsYbearing a - 2) (textExtentsWidth a / 2 + 2) (textExtentsHeight a + 4)
  rectangle (textExtentsXbearing a - 2) (textExtentsYbearing a - 2) (textExtentsWidth a + 4) (textExtentsHeight a + 4)

color (a,b,c) = setSourceRGB a b c

white = (255,255,255)
black =(0,0,0)
4

1 回答 1

5

根据文档,showText从当前位置开始绘制其文本。translate移动原点,但不移动当前位置。您必须使用moveTo而不是translate选择文本的位置。(第translate一次调用发生的事实与newPath删除当前位置的事实有关。)

于 2012-11-11T19:22:35.867 回答