1

快速入门diagrams告诉我编译并运行以下程序:

{-# LANGUAGE NoMonomorphismRestriction #-}

import Diagrams.Prelude
import Diagrams.Backend.SVG.CmdLine

main = mainWith (circle 1 :: Diagram B)

他们声称:

如果您现在在您最喜欢的网络浏览器中查看 circle.svg,您应该会看到 圆圈

然而,事实并非如此。我实际看到的是这样的:

麦田圈

注意图表的裁剪边缘。这是因为线条有宽度,但假设线条没有宽度,图像正在被裁剪。

这是 SVG 输出:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
    xmlns="http://www.w3.org/2000/svg" 
    height="200.0000" stroke-opacity="1" 
    viewBox="0 0 200 200" 
    font-size="1" 
    width="200.0000" 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    stroke="rgb(0,0,0)" 
    version="1.1">
  <defs></defs>
  <g
      stroke-linejoin="miter" 
      stroke-opacity="1.0" 
      fill-opacity="0.0" 
      stroke="rgb(0,0,0)" 
      stroke-width="0.8" 
      fill="rgb(0,0,0)" 
      stroke-linecap="butt" 
      stroke-miterlimit="10.0">
    <path 
      d="M 200.0000,100.0000 c 0.0000,-55.2285 -44.7715,-100.0000 -100.0000 -100.0000c -55.2285,-0.0000 -100.0000,44.7715 -100.0000 100.0000c -0.0000,55.2285 44.7715,100.0000 100.0000 100.0000c 55.2285,0.0000 100.0000,-44.7715 100.0000 -100.0000Z"
    />
  </g>
</svg>

在定义图表的包络线时,我怎么知道diagrams要考虑线的宽度?

4

1 回答 1

0

对不起,我以前从未见过这个;以防万一其他人遇到它:你是对的,本教程对你来说有点快,因为它自动将所有示例图包装在frame. 没有办法告诉图表在制作信封时考虑线的宽度(由于各种原因,这将非常困难),但您可以在图表外部添加一些空间,例如使用类似framepad.

于 2017-02-14T20:26:04.587 回答