tikz - UML 스타일 노트 상자 그리기

tikz - UML 스타일 노트 상자 그리기

tikz로 UML 스타일의 메모 상자를 그릴 수 있나요?

아래 그림은 UML에서 복사되었습니다.

여기에 이미지 설명을 입력하세요

나는 아래와 같이 tikz로 시도합니다.

\documentclass[tikz,margin=3mm]{standalone}
\usetikzlibrary{positioning,shapes.multipart}

\definecolor{activityBackgroundColor}{RGB}{254,254,206}
\definecolor{activityBorderColor}{RGB}{168,0,54}
\definecolor{noteBackgroundColor}{RGB}{251,251,119}
\definecolor{noteBorderColor}{RGB}{168,0,54}
\begin{document}

\begin{tikzpicture}[every text node part/.style={align=center}]

\node (A) [draw=activityBorderColor,fill=activityBackgroundColor,rectangle,rounded corners,] {Hello \\ world};
\node[draw=noteBorderColor,fill=noteBackgroundColor,rectangle,right=2mm of A] {this is \\ a node};
\end{tikzpicture}

\end{document}

산출:

여기에 이미지 설명을 입력하세요

UML 메모 상자와 정확히 동일한 스타일을 어떻게 얻을 수 있습니까?

답변1

shapes.callout별 일 없이도 가까이 다가가는 도서관이 있다 . 모서리가 접힌 모양을 고집한다면 새로운 모양을 직접 만드는 것이 가능합니다(비록 그 하나의 세부 사항을 위해서는 꽤 많은 작업이 필요할 것 같습니다).

\documentclass[tikz,margin=3mm]{standalone}
\usetikzlibrary{positioning,shapes.multipart,shapes.callouts}

\definecolor{activityBackgroundColor}{RGB}{254,254,206}
\definecolor{activityBorderColor}{RGB}{168,0,54}
\definecolor{noteBackgroundColor}{RGB}{251,251,119}
\definecolor{noteBorderColor}{RGB}{168,0,54}
\begin{document}

\begin{tikzpicture}[every text node part/.style={align=center}]

\node (A) [draw=activityBorderColor,fill=activityBackgroundColor,rectangle,rounded corners,] {Hello \\ world};
\node[draw=noteBorderColor,fill=noteBackgroundColor,rectangle callout,callout relative pointer={(-1,0)},right =of A] {this is \\ a node};
\end{tikzpicture}

\end{document}

코드 출력

답변2

Alan Munn의 답변에 접힌 작은 모서리를 추가하려면 다음을 수행하십시오.

\documentclass[tikz,margin=3mm]{standalone}
\usetikzlibrary{positioning,%shapes.multipart,
    shapes.callouts}
\definecolor{activityBackgroundColor}{RGB}{254,254,206}
\definecolor{activityBorderColor}{RGB}{168,0,54}
\definecolor{noteBackgroundColor}{RGB}{251,251,119}
\definecolor{noteBorderColor}{RGB}{168,0,54}
\begin{document}

    \begin{tikzpicture}[every text node part/.style={align=center}]
        \node (A) [draw=activityBorderColor,fill=activityBackgroundColor,rectangle,rounded corners] {Hello \\ world};
        \node[draw=noteBorderColor,fill=noteBackgroundColor,rectangle callout,callout relative pointer={(-1,0)},right =3em of A] (B) {this is \\ a node};
        \draw[white, fill=white] ([xshift=-4pt]B.north east) -- (B.north east) -- ([yshift=-4pt]B.north east);
        \draw[noteBorderColor, fill=noteBackgroundColor, line width=.4pt] ([shift={(-4pt,-.2pt)}]B.north east) -- ([shift={(-4pt,-4pt)}]B.north east)  [rounded corners=.01pt]-- ([shift={(-.2pt,-4pt)}]B.north east) -- cycle;
    \end{tikzpicture}

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보