![带圆角的线/箭头到节点](https://linux22.com/image/281156/%E5%B8%A6%E5%9C%86%E8%A7%92%E7%9A%84%E7%BA%BF%2F%E7%AE%AD%E5%A4%B4%E5%88%B0%E8%8A%82%E7%82%B9.png)
到/来自圆角的线结束于“东北”位置,而不是在节点周围的线。
有没有简单的方法可以让线条/箭头结束在 A 周围绘制的线上?
梅威瑟:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw,rounded corners] (A) {A};
\node[draw] (B) at (1,1) {B};
\fill[red] (A.north east) circle(0.5pt) node[font=\tiny, above, anchor =west]{(A.north east)};
\draw[<->] (A) -- (B);
\end{tikzpicture}
\end{document}
答案1
这里是使用的一种手动方法shorten
。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw,rounded corners] (A) {A};
\node[draw] (B) at (1,1) {B};
%\fill[red] (A.north east) circle(0.5pt) node[font=\tiny, above, anchor =west]{(A.north east)};
\draw[<->,shorten <= -2pt+\pgflinewidth] (A) -- (B);
\end{tikzpicture}
\end{document}
答案2
使用经验解决方案:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw,rounded corners,yellow,minimum height=1cm, minimum width=1cm] (A) {ABC};
\node[draw] (B) at (1,1) {B};
\coordinate[xshift=-0.3ex,yshift=-0.3ex] (fakeA) at (A.north east);
\draw [<->, blue] (fakeA) -- (B);
\draw [red] (A.north east) -- (B);
\end{tikzpicture}
\end{document}
您不能使用A.xx
锚点:该点指向真正的矩形。圆角是一种路径操作。
TikZ 中的节点由两个函数组成:第一个函数使用路径操作有效地写入节点,所有路径参数都可以传递给此命令,圆角是路径操作修饰符。
第二个函数需要类似光线追踪的操作。对于每个点,此函数应返回线 (0,0)(此点)与节点之间的交点。
第三,节点定义一些锚点,预定义的位置。这个位置与路径修改器操作无关。
根据这些事实,您有 3 个解决方案:使用圆角矩形:像这样
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\node[draw,rounded rectangle,yellow,minimum height=0.5cm, minimum width=1cm] (A) {ABC};
\node[draw] (B) at (1,1) {B};
\draw [<->, blue] (A) -- (B);
\end{tikzpicture}
\end{document}
但是您无法指定矩形圆角部分的宽度和高度。
- 制作自己的形状,更好地管理圆形部分(非常复杂,需要一些数学知识(在光线追踪功能中)。
- 像我之前举的例子那样,举一些虚假的观点。
注意:您不能使用交叉点 TikZ 库来找到正确的点,我已经尝试过了,这个库不太喜欢圆角。