按照这个答案:使用 TikZ 在图像上绘图, 我在用着
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=0.9\textwidth]{some_image.jpg}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\end{scope}
\end{tikzpicture}
在图像上绘制。这(在环境内scope
)会重新缩放 x 和 y 轴的坐标以匹配图像的边框(y = 0 是下边框,y = 1 是图像的上边框)。我想在命令中使用这些新的重新缩放的长度,例如
\node[inner sep = 0.5]
0.5 将默认为 0.5pt,而我可能希望使用给定 x 或 y 轴的长度。有没有简单的方法可以获取此长度,然后在节点命令中使用它?我正在寻找看起来像\node[inner xsep = \xlength, inner ysep = \ylength]
答案1
您可以使用
\path(1,1);\pgfgetlastxy{\xlength}{\ylength}
在范围内。
例子:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0pt] (image) at (0,0) {\includegraphics[width=0.9\textwidth]{example-image}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\path(1,1);\pgfgetlastxy{\xlength}{\ylength}
\node[
inner xsep=.25*\xlength,
inner ysep=.25*\ylength,
draw=green,
line width=4mm,
fill=orange,
opacity=.2
] at (.25,.25){};
\node[
inner xsep=.5*\xlength,
inner ysep=.5*\ylength,
draw=purple,
line width=4mm,
opacity=.2
] at (.5,.5){};
\end{scope}
\end{tikzpicture}
\end{document}
结果是