有什么简洁的方法可以使用相对坐标(例如图像宽度/高度的分数)将对象叠加在图像之上?
例如尝试绘制一个红色矩形来突出显示特定区域这个图片:
\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
时,矩形仅出现在右下角区域,而预期此参数指示坐标系的原点...x
y
{(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}