我经常需要在图像上精确绘图。为此,我在图像上绘制两条路径,并按比例将点放置在图像上。此解决方案允许我更改图像的大小,而无需像下图中那样重新计算点。
\documentclass[A4]{article}
\usepackage{tikz}
\usepackage{graphicx}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node(img){\includegraphics[width=0.5\textwidth]{tux.png}};
\draw[red] (img.west) -- (img.east)
coordinate[pos=0.53](ax)
coordinate[pos=0.41](bx);
\draw[red] (img.south) -- (img.north)
coordinate[pos=0.74] (ay)
coordinate[pos=0.74] (by);
\draw[red,ultra thick] (ax|-ay) circle (0.2cm);
\draw[blue,ultra thick] (bx|-by) circle (0.2cm);
\end{tikzpicture}
\begin{tikzpicture}
\node(img){\includegraphics[width=0.3\textwidth]{tux.png}};
\path[red] (img.west) -- (img.east)
coordinate[pos=0.53](ax)
coordinate[pos=0.41](bx);
\path[red] (img.south) -- (img.north)
coordinate[pos=0.74] (ay)
coordinate[pos=0.74] (by);
\draw[red,ultra thick] (ax|-ay) circle (0.2cm);
\draw[blue,ultra thick] (bx|-by) circle (0.2cm);
\end{tikzpicture}
\begin{tikzpicture}[rotate=30,transform shape]
\node(img){\includegraphics[width=0.5\textwidth]{tux.png}};
\draw[red] (img.west) -- (img.east)
coordinate[pos=0.53](ax)
coordinate[pos=0.41](bx);
\draw[red] (img.south) -- (img.north)
coordinate[pos=0.74] (ay)
coordinate[pos=0.74] (by);
\draw[red,ultra thick] (ax|-ay) circle (0.2cm);
\draw[blue,ultra thick] (bx|-by) circle (0.2cm);
\end{tikzpicture}
\end{document}
我想要的是一个命令或环境
\begin {imageScope}[xstep = imageWidth / 10, ystep = imageHeight / 10]
...
...
\end{imageScope}
它将允许我使用绘图命令在图像上直接以相对方式定位不同的点,例如
\draw (x1, y1) - (x2, y2);
其中 (x1, y1) 和 (x2, y2) 在与图像相关的坐标系中定义。
答案1
\documentclass[tikz,border=3.14mm]{standalone}
\newcommand{\imgrid}[1]
{
\path (#1.south west);
\pgfgetlastxy{\xmin}{\ymin};
\path (#1.north east);
\pgfgetlastxy{\xmax}{\ymax};
\pgfmathsetmacro{\xstp}{(\xmax-\xmin)/10}
\pgfmathsetmacro{\ystp}{(\ymax-\ymin)/10}
\draw[gray] (\xmin,\ymin) grid[xstep=\xstp pt,ystep=\ystp pt] (\xmax,\ymax);
}
\begin{document}
\begin{tikzpicture}
\node (img) {\includegraphics[scale=0.5]{pingoo.jpg}};
\imgrid{img};
\end{tikzpicture}
\end{document}
当然,正如 Rmano 所建议的,您可以将图像嵌套到示波器中,并在该示波器内绘制网格。这样效果很好。但是您要求一个执行相同操作的命令,所以它在这里。只需计算图像左下点和右上点的坐标,然后将距离划分为您想要的任何部分(此处为 10)。