连接两个圆边矩形的边,没有间隙

连接两个圆边矩形的边,没有间隙

我试图在圆角矩形之间画一条线。但是,我希望这条线能接触到角。结果却是这条线的末端就像矩形没有圆角一样。

我记得我已经遇到过这个问题,但我不记得我是如何解决它的(也许我只是删除了圆角,但这次我不能)。

有人对如何消除差距有什么建议吗?

注意:我不能画一条线到矩形的中心,然后在该线上方画一个矩形,因为我将为该线自定义结尾(未在 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适当的量。

相关内容