如何在 TikZ 背景中绘制星星

如何在 TikZ 背景中绘制星星

我通过以下方式在背景上绘制形状pgfonlayer

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds}

\begin{document}
 \begin{tikzpicture}
  \begin{pgfonlayer}{background}
   \draw[rounded corners,fill=red] (1,1) rectangle (2,2);
   \draw[fill=blue] (0,0) circle (.8cm);
  \end{pgfonlayer}
 \end{tikzpicture}
\end{document}

rectangle我知道绘制或所需的值(坐标)circle,但我不知道绘制 所需的参数是什么star

我们定义起始坐标;对于,我们给出在两点之间rectangle绘制的第二个坐标,对于,我们给出在起始点周围绘制圆的半径。我们需要给出什么才能在起始点周围绘制星星?rectanglecircle

\draw[fill=green] (0,0) star ????;

附言:抱歉,我知道这是一个基本的典型问题,但我对此进行了很长时间的思考。

答案1

这里有一个用于绘制星星以及“n-gram”的宏。意思是当你连接正多边形的对角线时产生的星星:

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds}

\newcommand{\tstar}[5]{% inner radius, outer radius, tips, rot angle, options
\pgfmathsetmacro{\starangle}{360/#3}
\draw[#5] (#4:#1)
\foreach \x in {1,...,#3}
{ -- (#4+\x*\starangle-\starangle/2:#2) -- (#4+\x*\starangle:#1)
}
-- cycle;
}

\newcommand{\ngram}[4]{% outer radius, tips, rot angle, options
\pgfmathsetmacro{\starangle}{360/#2}
\pgfmathsetmacro{\innerradius}{#1*sin(90-\starangle)/sin(90+\starangle/2)}
\tstar{\innerradius}{#1}{#2}{#3}{#4}
}

\begin{document}

\begin{tikzpicture}
 \tstar{2}{4}{7}{10}{thick,fill=blue}
\end{tikzpicture}
\begin{tikzpicture}
 \tstar{0.5}{3}{20}{0}{thick,fill=green}
\end{tikzpicture}

\begin{tikzpicture}
 \ngram{4}{5}{45}{thick,fill=red}
\end{tikzpicture}
\begin{tikzpicture}
 \ngram{4}{7}{0}{thick,fill=yellow}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

画一颗没有节点的星星并不难

\documentclass[11pt]{scrartcl}
\usepackage{tikz}    

\newcommand\Star[3][]{%
\path[#1] (0  :#3) -- ( 36:#2) 
       -- (72 :#3) -- (108:#2)
       -- (144:#3) -- (180:#2)
       -- (216:#3) -- (252:#2)
       -- (288:#3) -- (324:#2)--cycle;}


\begin{document}
\begin{tikzpicture}
\Star[fill=gray!30,draw]{2}{4} 
\end{tikzpicture}
\end{document} 

在此处输入图片描述

答案3

这个答案总结了以下有用的评论安德鲁·史黛西杰克,所有功劳都归于他们

TikZ确实有常见形状(如circle和 )的创建器rectangle,但没有不常见形状(如 )的创建器star。因此,要创建star,您需要使用\node而不是\draw。代码将如下所示

\begin{pgfonlayer}{background}
\node[star,fill=red,minimum width=1cm] at (0,0) {};
\end{pgfonlayer}

我希望这可以帮助那些为形状而苦苦挣扎的人pgfonlayer

答案4

\documentclass{article}
\usepackage{tikz}
\begin{document}
 \begin{tikzpicture}
   \node[
       star,
       star points=8,
       star point height=1.2mm,
       ball color=violet,
       draw=blue!50,
       font=\bf
    ] at (current page.center) {I'M FROM VIETNAMESE};
 \end{tikzpicture}
\end{document}

相关内容