在相对坐标中将 Tikz 形状定位在图像上的最简单方法

在相对坐标中将 Tikz 形状定位在图像上的最简单方法

有什么简洁的方法可以使用相对坐标(例如图像宽度/高度的分数)将对象叠加在图像之上?

例如尝试绘制一个红色矩形来突出显示特定区域这个图片

https://i.stack.imgur.com/DdGhE.png

\documentclass[a4paper]{beamer}

\usepackage{tikz}

\begin{document}

\begin{frame}{}

\begin{tikzpicture}
\node[inner sep=0, anchor=south west] (img) at (0,0) {
    \includegraphics[keepaspectratio,height=.9\textheight,width=\linewidth]{refgrid_crop}%
};
    \begin{scope}[x={(img.south west)},y={(img.south west)},local bounding box=img]
    \draw[thick, rounded corners, color=red!80!black, anchor=south west] (0.5, 0.3)
        rectangle (0.75, 0.5);
    \end{scope}
\end{tikzpicture}

\end{frame}
\end{document}

上面的代码使用 ,scope根本不会在所需分数处显示矩形。另外,我不明白为什么,但是当我将范围参数和设置为0.5, 0.3时,矩形仅出现在右下角区域,而预期此参数指示坐标系的原点...xy{(img.south east)}

如何切换单位到图像分数起源于西南

答案1

展示比解释更容易。calc tikzlibrary 可以定位两点之间的分数距离。以下定位 (0.5,0.3) 相对于 (img) 节点的位置。

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\node[inner sep=0] (img) {\includegraphics{example-image}};
\coordinate (A) at ($(img.west)!0.5!(img.east)$);% x location
\coordinate (B) at ($(img.south)!0.3!(img.north)$);% y location
\node[red,draw] at (A|-B) {here};
    
\end{tikzpicture}
\end{document}

演示

相关内容