在图像上绘制的图形与原始图像不完全吻合。

在图像上绘制的图形与原始图像不完全吻合。

假设我用下面的代码绘制一个红色图像,生成input.pdf:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt,red]
    \draw (0,0) rectangle (50,50);
    \draw (25,25) circle (25);
\end{tikzpicture}
\end{document}

在此处输入图片描述

然后包含 input.pdf 并在该图像上绘制相同的东西(用黑色绘制):

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt]
    \node[anchor=south west,inner sep=0,outer sep=0] at (0,0) {\includegraphics{input.pdf}};
    \draw (0,0) rectangle (50,50);
    \draw (25,25) circle (25);
\end{tikzpicture}
\end{document}

但黑线并没有完全覆盖红线,见下面的放大部分:

在此处输入图片描述

我绘制的图像代码有什么问题?

答案1

好的,我刚刚尝试了我认为应该有效的方法,令人惊讶的是,它确实有效。就是这样。

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt]
    \node[anchor=south west,inner sep=0,outer sep=0] at (-\pgflinewidth/2,-\pgflinewidth/2) {\includegraphics{input.pdf}};
    \draw (0,0) rectangle (50,50);
    \draw (25,25) circle (25);
\end{tikzpicture}
\end{document}

生产

在此处输入图片描述

正如预期的那样。为什么?你把节点放在锚点上south west,正如
David Purton 指出的那样,你的图像比线宽宽(和高)了一半(因为它在每个方向上都比线宽宽和高了一半)。为什么会这样?你通过指定的坐标绘制一条路径,线宽会添加到其中。我知道这个解释很笨拙,用 marmot 语言解释会容易得多,但我不确定如何输入这个,所以作为折衷,我添加了一个数字。;-)

在此处输入图片描述

答案2

@marmot 解决方案的替代方法是将图像放在 (25,25) 处,与圆圈对齐,并将其固定在圆圈的中心:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=1pt,y=1pt,line width = 1pt]
    \node[inner sep=0,outer sep=0] at (25,25) {\includegraphics{input.pdf}};
    \draw (0,0) rectangle (50,50);
    \draw (25,25) circle (25);
\end{tikzpicture}
\end{document}

相关内容