我试图在圆角矩形之间画一条线。但是,我希望这条线能接触到角。结果却是这条线的末端就像矩形没有圆角一样。
我记得我已经遇到过这个问题,但我不记得我是如何解决它的(也许我只是删除了圆角,但这次我不能)。
有人对如何消除差距有什么建议吗?
注意:我不能画一条线到矩形的中心,然后在该线上方画一个矩形,因为我将为该线自定义结尾(未在 MWE 中显示)。
NB2:我必须处理大量此类矩形,这些矩形并不总是像 MWE 那样定位。我正在寻找一种通用方法,而不是一种临时方法。
\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{
positioning
}
\begin{document}
\begin{tikzpicture}
\node [draw, rectangle, rounded corners] (A) {A};
\node [draw, rectangle, rounded corners] (B) [below left = 0.5cm and 0.25cm of A] {B};
\draw (A) -- (B);
\end{tikzpicture}
\end{document}
答案1
我认为最干净的解决方案是Ignasi 建议:定义一个新形状。假设您不想这样做,您可以计算节点边界与连接其中心的路径之间的交点。此 MWE 提供了一种基本方法和一种稍微高级一些的方法来实现这一点。更高级的版本具有一种样式,它为节点的边界路径赋予节点的名称,因此您不必手动添加所有这些name path=...
。它还附带一个宏(没有样式,因为我们需要两个单独的路径并且\pgfextra
可能会适得其反;如果您对不安全的版本感兴趣,我可以添加它),它允许您无缝连接节点。
\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{intersections,positioning}
\begin{document}
\begin{tikzpicture}
\path node [draw, rectangle, rounded corners,name path=A] (A) {A};
\path node[draw, rectangle, rounded corners,name path=B,below left = 0.5cm and 0.25cm of A] (B) {B};
\path[name path=AB] (A.center) -- (B.center);
\draw[name intersections={of=A and AB,by=iA},name intersections={of=B and
AB,by=iB}] (iA) -- (iB);
\end{tikzpicture}
\makeatletter
\tikzset{auto name node path/.style={name path=\tikz@fig@name}}
\makeatother
\newcommand{\Connect}[3][draw]{
\path[name path=#2#3] (#2.center) -- (#3.center);
\path[#1,name intersections={of=#2 and #2#3,by=i#2},
name intersections={of=#3 and #2#3,by=i#3}] (i#2) -- (i#3);
}
\begin{tikzpicture}[nodes={auto name node path}]
\path node [draw, rectangle, rounded corners] (A) {A};
\path node[draw, rectangle, rounded corners,below left = 0.5cm and 0.25cm of A] (B) {B};
\Connect{A}{B}
\end{tikzpicture}
\end{document}
答案2
\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
box/.style = {draw, rounded corners, outer sep=0pt},
shorten <>/.style = {shorten >=#1,shorten <=#1}
]
\node [box] (A) {A};
\node [box, below left = 0.5cm and 0.25cm of A] (B) {B};
\draw[shorten <>=-0.5pt] (A) -- (B);
\end{tikzpicture}
\end{document}
线条是从非圆角矩形的角部绘制的。因此,您需要相应地延长连接线。看起来是0.5pt
适当的量。