4

I have a tikzpicture tiled inside of a tikzpicture with the shape of a starburst as a central, repeating node. I want to fill the starburst with a picture. Normally, for a question here, I'd take the starburst out of the tiling and have a much simpler MWE. However, I do not want work-around solutions that are incompatible with tiling using an \sbox. I have this which produces a starburst in a tiling as expected:

\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}

Starburst in a tiling

When I replace ] at (2*\x+1, 2*\y+1) { }; with ] at (2*\x+1, 2*\y+1) {path picture bounding box.center={\node {\includegraphics[width=0.065\textwidth]{Fireball.png} } } };, I get an error message that path picture is an undefined control sequence even though the Tikz & PGF manual for Version 2.10-cvs says that nodes are placed on paths. When I substitute ystar.center for path picture bounding box.center, I get another undefined control sequence error.

By substituting \node at (2*\x+1, 2*\y+1) {\includegraphics[width=0.065\textwidth]{Fireball.png}}; for the entire starburst node, I can get this, but the picture is already in the shape of a circle, and I want a starburst.

Fiery Circle

Lastly, I can draw a shape and use that bounding box to trim the picture, but I don't want to draw each segment of the starburst:

\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;

Not the actual shape I'll use, but this process does trim a picture by the shape.

Other Answers

This talks about shapes inside of a node, but I want a shape to act as a bounding box for a picture inside of a node. TikZ: Different shapes inside of a node

This shows how to fill a (drawn) rectangle with a picture, but as I've said above, I'm not looking to draw a shape. I want use a shape from a shape library: How to create a rectangle filled with image using TikZ?

This addresses a particular feature of drawing a rectangle to use to trim a picture, but not what I want: How to create a rectangle filled with image using TikZ?

This talks about including graphics in a node, not the bounding box issue: Moving a picture inside a scope on a background layer

This is close, but does not include the bounding aspect, which is really what is tripping me up: How to typeset a TikZ picture inside a node?

1 Answer 1

3

I think the problem is just where you tried to place path picture. It should be into node options not as node contents.

I don't have globe or Fireball images, but as you can see, the result keeps the starnode shape.

\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}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.