我tikzpicture
在 内有一个平铺,tikzpicture
以shape
星芒 为中心,重复node
。我想用图片填充星芒。通常,对于这里的问题,我会将星芒从平铺中取出,并使用更简单的 MWE。但是,我不想要与使用 进行平铺不兼容的变通解决方案\sbox
。我有这个,它可以按预期在平铺中产生星芒:
\documentclass[tikz]{standalone}
\usepackage[skins]{tcolorbox}
\usetikzlibrary{shapes}
\begin{document}
\newsavebox{\tileone}
\sbox{\tileone}{\let\newpage\relax%
\begin{tikzpicture}[x=0.975cm,y=0.975cm]
\clip (0,0.15) rectangle (2,2.15);
\foreach \x in {0,1} {
\foreach \y in {0,1} {
\node[] at (2*\x, 2*\y)
{ \includegraphics[width=0.065\textwidth]{globe.png}};
\node[shape=starburst, fill=yellow, draw=red, very thin, rotate=10,
/pgf/starburst point height=0.25cm, line width=0.25pt,
minimum height=1.20cm, minimum width=1.20cm, name=ystar
] at (2*\x+1, 2*\y+1) { };
}
}
\begin{scope}[dashed,black]
\draw plot (\x,\x-1);
\draw plot (\x,\x+1);
\draw plot (\x,-\x+1);
\draw plot (\x,-\x+3);
\end{scope}
\end{tikzpicture}%
}
\begin{tikzpicture}[x=1.0cm, y=1.0cm]
\tikzstyle{every node}=[font=\tiny]
\path[draw,fill tile picture={\node[inner sep=0pt,outer sep=0pt,
fill=blue!40!yellow, rounded corners=0.5ex]
{\scalebox{0.5}{\usebox{\tileone}}};
}, rounded corners=1ex] (0.0, 0.0) rectangle (4.0, 4.0);
\end{tikzpicture}
\end{document}
当我] at (2*\x+1, 2*\y+1) { };
用替换时] at (2*\x+1, 2*\y+1) {path picture bounding box.center={\node {\includegraphics[width=0.065\textwidth]{Fireball.png} } } };
,我收到一条错误消息,即path picture
未定义的控制序列,尽管Tikz & PGF manual
forVersion 2.10-cvs
表示节点已放置在路径上。当我ystar.center
用替换时path picture bounding box.center
,我收到另一个未定义的控制序列错误。
通过替换\node at (2*\x+1, 2*\y+1) {\includegraphics[width=0.065\textwidth]{Fireball.png}};
整个星爆节点,我可以得到这个,但是图片已经是圆形了,而我想要的是星爆。
最后,我可以绘制一个形状并使用该边界框来修剪图片,但我不想绘制星芒的每个部分:
\draw[path picture={\node at (path picture bounding box.center) {
\includegraphics[height=2.50cm, trim=70 0 0 30, clip]
{Fireball.png} };},
draw=blue, thick] (2*\x+1, 2*\y+1) -- ++ (0,0.75) -- ++ (0.75, 0) -- cycle;
这不是我实际要使用的形状,但是这个过程确实根据形状修剪了图片。
其他答案
这是谈论shapes
节点内部的事情,但我想要一个形状作为节点内部图片的边界框。TikZ:节点内部的不同形状
这显示了如何用图片填充(绘制的)矩形,但正如我上面所说,我并不想绘制形状。我想使用形状库中的形状:如何使用 TikZ 创建填充图像的矩形?
这解决了绘制用于修剪图片的矩形的一个特定功能,但不是我想要的:如何使用 TikZ 创建填充图像的矩形?
这谈论的是节点中包含图形,而不是边界框问题:在背景层上的范围内移动图片
这很接近,但不包括边界方面,这才是真正让我困惑的地方:如何在节点内排版 TikZ 图片?
答案1
我认为问题在于您尝试放置的位置path picture
。它应该放在node
选项中,而不是作为节点内容。
我没有globe
或Fireball
图像,但正如您所看到的,结果保持了star
节点形状。
\documentclass[tikz]{standalone}
\usepackage[skins]{tcolorbox}
\usetikzlibrary{shapes}
\begin{document}
\newsavebox{\tileone}
\sbox{\tileone}{\let\newpage\relax%
\begin{tikzpicture}[x=0.975cm,y=0.975cm]
\clip (0,0.15) rectangle (2,2.15);
\foreach \x in {0,1} {
\foreach \y in {0,1} {
\node[] at (2*\x, 2*\y)
{ \includegraphics[width=0.065\textwidth]{example-image-A}};
\node[shape=starburst, fill=yellow, draw=red, very thin, rotate=10,
/pgf/starburst point height=0.25cm, line width=0.25pt,
minimum height=1.20cm, minimum width=1.20cm, name=ystar,
path picture={\node at (path picture bounding box.center) {\includegraphics[width=1cm]{example-image-B}};}
] at (2*\x+1, 2*\y+1) { };
}
}
\begin{scope}[dashed,black]
\draw plot (\x,\x-1);
\draw plot (\x,\x+1);
\draw plot (\x,-\x+1);
\draw plot (\x,-\x+3);
\end{scope}
\end{tikzpicture}%
}
\begin{tikzpicture}[x=1.0cm, y=1.0cm]
\tikzstyle{every node}=[font=\tiny]
\path[draw,fill tile picture={\node[inner sep=0pt,outer sep=0pt,
fill=blue!40!yellow, rounded corners=0.5ex]
{\scalebox{0.5}{\usebox{\tileone}}};
}, rounded corners=1ex] (0.0, 0.0) rectangle (4.0, 4.0);
\end{tikzpicture}
\end{document}