在 tikz 中绘制十字架

在 tikz 中绘制十字架

如果我做

\draw (1,1) circle (1pt)

1pttikz 绘制一个直径为 的小圆圈(1,1)

我如何定义cross这样的路径

\draw (1,1) cross (1pt)

画一个有直径的小十字1pt(像圆形一样可以调整大小)?

答案1

cross相当于的命令circle不存在,TiKZ但您可以使用库cross out中的节点shapes.misc。这种节点会添加交叉节点的文本,但很容易对其进行调整以执行您想要的操作。

\tikzset{cross/.style={cross out, draw, 
         minimum size=2*(#1-\pgflinewidth), 
         inner sep=0pt, outer sep=0pt}}

因为circle (1pt)绘制一个半径为 1pt 的圆,它的总大小将为 2pt,则cross节点的大小定义为minimum size=2*(#1-\pgflinewidth)inner,且outer间隔固定为0pt

如果十字角不是您想要的,您可以使用rotate选项进行更改。接下来是一些示例。我还将circles它们放在上面,只是为了显示圆和十字具有相同的大小。

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{shapes.misc}

\tikzset{cross/.style={cross out, draw=black, minimum size=2*(#1-\pgflinewidth), inner sep=0pt, outer sep=0pt},
%default radius will be 1pt. 
cross/.default={1pt}}

\begin{document}
\begin{tikzpicture}[]

\draw (0,0) circle (1pt);

\draw (.5,0) node[cross,rotate=10] {};
\draw (.5,0) circle (1pt);

\draw (0,.5) circle (1pt);
\draw (0,.5) node[cross,red] {};

\draw (.5,.5) node[cross,rotate=30] {};

\draw (0.25,.25) circle (2pt);
\draw (0.25,.25) node[cross=2pt,rotate=45,green]{};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

替代解决方案使用pic

\documentclass[]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\tikzset{
    cross/.pic = {
    \draw[rotate = 45] (-#1,0) -- (#1,0);
    \draw[rotate = 45] (0,-#1) -- (0, #1);
    }
}

\begin{document}



\begin{tikzpicture}

    \draw (0,0) circle (1pt);

    \path (.5,0) pic[rotate = 10] {cross=1pt};
    \draw (.5,0) circle (1pt);

    \draw (0,.5) circle (1pt);
    \path (0,.5) pic[red] {cross=1pt};

    \draw (.5,.5) pic[rotate = 30] {cross=1pt};

    \draw (0.25,.25) circle (2pt);
    \draw (0.25,.25) pic[rotate=45,green] {cross=2pt};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

您可以在相应位置写一个“x”:

\draw (1,1) node {x};

然后,您可以使用字体大小调整大小,如下所示:

\draw (1,1) node {\Huge x};

“x” 的中心实际上正好位于给定的坐标处。

相关内容