绘制非锯齿状网格轮廓

绘制非锯齿状网格轮廓

我正在尝试用更粗的线条为我的 TikZ 网格创建轮廓,但似乎没有对边缘进行任何校正,因此事情变得锯齿状:

\documentclass{article}

\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}
    \pgfmathsetmacro{\step}{10 / (19 - 1)}
    \draw[step=\step] (0, 0) grid (10cm, 10cm);
    \draw[step=10cm, line width = 0.7mm] (0, 0) grid (10cm, 10cm);
  \end{tikzpicture}
\end{document}

Tikz 锯齿状网格轮廓

我以为 TikZgrid会原生修复这个问题,因为这听起来不是一个罕见的用例。也许grid我遗漏了一个论点?

无论如何,我尝试用简单的线条来解决这个问题。我想我也许应该用线宽的一半在顶部和底部,这样就可以了。但是这根本不起作用。那么,这里的公式是什么?我在 TeX 中计算东西的方式是否出了问题?

\documentclass{article}

\usepackage{tikz}

\newcommand{\boardOutline}[1]{
  \pgfmathsetmacro{\boardOutlineLineWidth}{0.8mm}
  % Just so the board outline isn't jagged
  \pgfmathsetmacro{\boardOutlinePadding}{\boardOutlineLineWidth / 2} % Multiplying by `0.0176` was the closest I got to something non-jagged

  % Top
  \draw[black, line width = \boardOutlineLineWidth]
    (-\boardOutlinePadding, #1) -- (#1 + \boardOutlinePadding, #1);
  % Right
  \draw[black, line width = \boardOutlineLineWidth] 
    (#1, 0) -- (#1, #1);
  % Bottom
  \draw[black, line width = \boardOutlineLineWidth]
    (-\boardOutlinePadding, 0) -- (#1 + \boardOutlinePadding, 0);
  % Left
  \draw[black, line width = \boardOutlineLineWidth]
    (0, 0) -- (0, #1);
}

\begin{document}
  \begin{tikzpicture}
    \pgfmathsetmacro{\step}{10 / (19 - 1)}
    \draw[step=\step] (0, 0) grid (10cm, 10cm);
    \boardOutline{10cm}
  \end{tikzpicture}
\end{document}

除以 2 得到的结果如下:

除以 2 的网格轮廓

我最接近非锯齿状的东西是乘以0.0176,我不知道为什么。

答案1

我不知道为什么使用填充line width / 2不起作用。

但是,就像评论中提到的@polyn一样,使用line cap = rect确实有效,例如:

\draw[..., line cap = rect] (0, 0) grid (10cm, 10cm);

相关内容