带圆角的线/箭头到节点

带圆角的线/箭头到节点

到/来自圆角的线结束于“东北”位置,而不是在节点周围的线。

在此处输入图片描述

有没有简单的方法可以让线条/箭头结束在 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 库来找到正确的点,我已经尝试过了,这个库不太喜欢圆角。

相关内容