答案1
您可以下载图像,将其剪切为可行的尺寸并增加亮度,将其导入文件,然后通过使用网格来定位要绘制的所有对象,您可以打印纸张并使用指南针找到坐标;然后从下面的对象和将覆盖它的其余部分开始绘制,然后通过剪切总数并以相同的方式放置文本来完成;正如你所看到的,这很困难但并非不可能。
结果:
梅威瑟:
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{contour}
\usetikzlibrary{arrows.meta,backgrounds, shapes.geometric,patterns.meta,decorations.pathmorphing}
\pgfdeclarepattern{
name=hatch,
parameters={\hatchsize,\hatchangle,\hatchlinewidth},
bottom left={\pgfpoint{-.1pt}{-.1pt}},
top right={\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}},
tile size={\pgfpoint{\hatchsize}{\hatchsize}},
tile transformation={\pgftransformrotate{\hatchangle}},
code={
\pgfsetlinewidth{\hatchlinewidth}
\pgfpathmoveto{\pgfpoint{-.1pt}{-.1pt}}
\pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}}
\pgfpathmoveto{\pgfpoint{-.1pt}{\hatchsize+.1pt}}
\pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{-.1pt}}
\pgfusepath{stroke}
}
}
\tikzset{
hatch size/.store in=\hatchsize,
hatch angle/.store in=\hatchangle,
hatch line width/.store in=\hatchlinewidth,
hatch size=5pt,
hatch angle=0pt,
hatch line width=.5pt,
}
\begin{document}
\contourlength{1pt}
\begin{tikzpicture}[
R/.style = {draw=#1,rectangle,fill=CYAN!30!white},
C/.style = {draw=#1,circle,fill=white, fill opacity=1},
E/.style = {draw=#1,ellipse,fill=white, fill opacity=1},
P/.style = {postaction={pattern={Lines[angle=#1, line width=0.75pt, distance=6pt]}, pattern color=black!50}},
D/.style = {decorate,decoration={random steps, segment length=2mm, amplitude=0.5mm}},
*/.tip={Circle[sep=-1pt,black,length=2pt]},
]
%Uncoment for get help lines to obtain coordinates.
%\draw (5,5) node{\includegraphics[height=10cm]{DownloadedImage.jpg}};
%%Grid in cm and mm units
%\draw[black!30,step=1mm] (0,0) grid (10,10);
%\draw[black!80,step=1cm,line width=0.2pt] (0,0) grid (10,10);
%\draw[|-|,line width=0.2pt] (0,10)++(0,3pt)-- ++(1cm,0) node[midway](n){};
%\draw[<-] (n.center) |- ++(10pt,5pt) node [anchor=180, inner sep=0pt]{\tiny \verb+1cm+};
%\foreach \i in {0,1,...,10}{
% \draw(0,10mm*\i)++(-1em,0) node(temp){\sf\tiny\i} (temp)-- (0,10mm*\i);
% \draw(10mm*\i,0)++(0,-1em) node(temp){\sf\tiny\i} (temp)-- (10mm*\i,0);
%}
% Visible things, order of drawing mathers.
\clip[draw] (5,5) circle (5cm);
\draw (3.6,6.4) node[C,minimum size=35mm,D]{};
\draw (3.1,9.1) node[C,minimum size=45mm,P=-80,D]{};
\draw (4.9,3.7) node[C,minimum size=39mm,D]{};
\draw (8.3,2.7) node[C=,minimum size=39mm,postaction={pattern=hatch, pattern color=black!50, hatch size=10pt, hatch angle=50},D]{};
\draw (5.5,0) node[E,minimum height=39mm,minimum width=29mm,rotate=-15,scale=1.7,D]{};
\draw (3.2,1) node[E,minimum height=39mm,minimum width=25mm,rotate=-30,scale=1.4,P=10,D]{};
\draw (0.3,5.6) node[E,minimum height=39mm,minimum width=25mm,rotate=24,scale=1.8,D]{};
\draw (1.8,3) node[E,minimum height=39mm,minimum width=29mm,rotate=-18,scale=1.2,D]{};
\foreach \xpos/\ypos/\state/\txt/\ori in{
3.5/1//bN/0,
4/2/fill/b/0,
1.7/2.8/fill/1/0,
2.2/4//N/0,
2.6/8/fill/a/0,
3.5/9//aN/0,
8/2.6/fill/ab/0,
7.5/4//abN/0%
}{
\draw(\xpos,\ypos) node[\state,circle,label={[scale=1.5]\ori:\contour{white}{$\txt$}},scale=0.7] {};
}
\end{tikzpicture}
\end{document}
过程:
帮助图像背景和网格
代码:
\draw (5,5) node{\includegraphics[height=10cm]{DownloadedImage.jpg}};
%Grid in cm and mm units
\draw[black!30,step=1mm] (0,0) grid (10,10);
\draw[black!80,step=1cm,line width=0.2pt] (0,0) grid (10,10);
\draw[|-|,line width=0.2pt] (0,10)++(0,3pt)-- ++(1cm,0) node[midway](n){};
\draw[<-] (n.center) |- ++(10pt,5pt) node [anchor=180, inner sep=0pt]{\tiny \verb+1cm+};
\foreach \i in {0,1,...,10}{
\draw(0,10mm*\i)++(-1em,0) node(temp){\sf\tiny\i} (temp)-- (0,10mm*\i);
\draw(10mm*\i,0)++(0,-1em) node(temp){\sf\tiny\i} (temp)-- (10mm*\i,0);
}
附录
要在裁剪区域后绘制内容,必须将其输入范围环境中,然后添加新代码,以防使圆圈变粗,我添加了代码\draw[draw, line width=2pt] (5,5) circle (5cm);
还有一个结果:
代码:
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{contour}
\usetikzlibrary{arrows.meta,backgrounds, shapes.geometric,patterns.meta,decorations.pathmorphing}
\pgfdeclarepattern{
name=hatch,
parameters={\hatchsize,\hatchangle,\hatchlinewidth},
bottom left={\pgfpoint{-.1pt}{-.1pt}},
top right={\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}},
tile size={\pgfpoint{\hatchsize}{\hatchsize}},
tile transformation={\pgftransformrotate{\hatchangle}},
code={
\pgfsetlinewidth{\hatchlinewidth}
\pgfpathmoveto{\pgfpoint{-.1pt}{-.1pt}}
\pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}}
\pgfpathmoveto{\pgfpoint{-.1pt}{\hatchsize+.1pt}}
\pgfpathlineto{\pgfpoint{\hatchsize+.1pt}{-.1pt}}
\pgfusepath{stroke}
}
}
\tikzset{
hatch size/.store in=\hatchsize,
hatch angle/.store in=\hatchangle,
hatch line width/.store in=\hatchlinewidth,
hatch size=5pt,
hatch angle=0pt,
hatch line width=.5pt,
}
\begin{document}
\contourlength{1pt}
\begin{tikzpicture}[
R/.style = {draw=#1,rectangle,fill=CYAN!30!white},
C/.style = {draw=#1,circle,fill=white, fill opacity=1},
E/.style = {draw=#1,ellipse,fill=white, fill opacity=1},
P/.style = {postaction={pattern={Lines[angle=#1, line width=0.75pt, distance=6pt]}, pattern color=black!50}},
D/.style = {decorate,decoration={random steps, segment length=2mm, amplitude=0.5mm}},
*/.tip={Circle[sep=-1pt,black,length=2pt]},
]
\draw[draw, line width=2pt] (5,5) circle (5cm);
\begin{scope}
\clip[draw] (5,5) circle (5cm);
\draw (3.6,6.4) node[C,minimum size=35mm,D]{};
\draw (3.1,9.1) node[C,minimum size=45mm,P=-80,D]{};
\draw (4.9,3.7) node[C,minimum size=39mm,D]{};
\draw (8.3,2.7) node[C=,minimum size=39mm,postaction={pattern=hatch, pattern color=black!50, hatch size=10pt, hatch angle=50},D]{};
\draw (5.5,0) node[E,minimum height=39mm,minimum width=29mm,rotate=-15,scale=1.7,D]{};
\draw (3.2,1) node[E,minimum height=39mm,minimum width=25mm,rotate=-30,scale=1.4,P=10,D]{};
\draw (0.3,5.6) node[E,minimum height=39mm,minimum width=25mm,rotate=24,scale=1.8,D]{};
\draw (1.8,3) node[E,minimum height=39mm,minimum width=29mm,rotate=-18,scale=1.2,D]{};
\foreach \xpos/\ypos/\state/\txt/\ori in{
3.5/1//bN/0,
4/2/fill/b/0,
1.7/2.8/fill/1/0,
2.2/4//N/0,
2.6/8/fill/a/0,
3.5/9//aN/0,
8/2.6/fill/ab/0,
7.5/4//abN/0%
}{
\draw(\xpos,\ypos) node[\state,circle,label={[scale=1.5]\ori:\contour{white}{$\txt$}},scale=0.7] {};
}
\end{scope}
\draw[draw, line width=2pt] (5,5) circle (5cm);
\end{tikzpicture}
\end{document}