控制 umlcd 弧的开始和结束

控制 umlcd 弧的开始和结束

我正在 pgf-umlcd 中创建类图。我有两个类,其中一个类聚合了另一个类的两个实例。执行此操作的明显方法如下。

 \begin{figure}[ht]
   \begin{tikzpicture}[show background grid]
     \begin{class}[text width=8 cm]{A}{0,0}
     \end{class}

     \begin{class}[text width=8 cm]{B}{0,-2}
     \end{class}

     \aggregation{A}{first}{1}{B}
     \aggregation{A}{second}{1}{B}
   \end{tikzpicture}
 \end{figure}

效果并不好,因为圆弧是从同一位置绘制到同一位置的,所以它们彼此重叠,标记圆弧的文本也是如此。

有没有一种方法可以控制边缘的位置,而不需要弄清楚箭头和线条样式并使用\draw

答案1

下面解决这个问题。

\begin{figure}[ht]
  \begin{tikzpicture}[show background grid]
    \begin{class}[text width=8 cm]{A}{0,0}
    \end{class}

    \begin{class}[text width=8 cm]{B}{0,-2}
    \end{class}

    \aggregation{[xshift=2cm] A.south}{first}{1}{[xshift=-2cm] B.north}
    \aggregation{[xshift=-2cm] A}{second}{1}{[xshift=-2cm] B.north}
  \end{tikzpicture}
\end{figure}

第一个和第四个参数传递到\draw括号内,因此可以在那里使用节点锚点(.south 和 .north)代码[xshift]为当前节点设置该参数并调整该节点在路径中的位置。

您需要指定 .south 和 .north,否则路径将从类图的中心绘制。因此,如果您要修改图表的高级布局,这将有些脆弱。

相关内容