![绘制非锯齿状网格轮廓](https://linux22.com/image/473759/%E7%BB%98%E5%88%B6%E9%9D%9E%E9%94%AF%E9%BD%BF%E7%8A%B6%E7%BD%91%E6%A0%BC%E8%BD%AE%E5%BB%93.png)
我正在尝试用更粗的线条为我的 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}
我以为 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 得到的结果如下:
我最接近非锯齿状的东西是乘以0.0176
,我不知道为什么。
答案1
我不知道为什么使用填充line width / 2
不起作用。
但是,就像评论中提到的@polyn一样,使用line cap = rect
确实有效,例如:
\draw[..., line cap = rect] (0, 0) grid (10cm, 10cm);