Seite 1 von 1

Fläche mit Raster füllen - TikZ

Verfasst: Mi 21. Dez 2016, 10:47
von Richard
Hallo zusammen,

Ich würde gerne eine Trapezförmige Fläche mit einem Raster füllen. Dabei könnte ich auch ein Rechteck machen und das überstehende überzeichnen.

Mein Minimalbeispiel:
\documentclass{scrbook}
\usepackage{tikz}	
\begin{document}
	\begin{tikzpicture}
	
	\draw[fill=black] (-0.5,7.5) -- (1.5,7.5) -- (1.5,6) -- (1,5.5) -- (0,5.5) -- (-0.5,6) -- (-0.5,7.5);
	\draw[fill=white] (-0.2,7.2) -- (1.2,7.2) -- (1.2,6.2) -- (0.8,5.8) -- (0.2,5.8) -- (-0.2,6.2) -- (-0.2,7.2);
	
	\draw [help lines, step=0.1cm] (-0.2,5.8) grid (1.2,7.2);
	\end{tikzpicture}
\end{document}
Dadurch das ich das innere erneut mit Weiß überzeichne, kann ich aber das Gitter nicht mehr überzeichnen.
Entweder müsste ich wirklich nur die schwarze Fläche füllen, dazu habe ich aber nix gefunden. :?
Oder ich muss das Gitter an meine Form anpassen, dazu habe ich auch nix gefunden. :?

Ich hoffe ihr habt eine Idee. :wink:
Danke euch,
Richard

Verfasst: Mi 21. Dez 2016, 11:16
von Bartman
Vermutlich gibt es elegantere Lösungen als meine, aber der folgende Vorschlag dürfte funktionieren:
\documentclass[tikz, border=2pt]{standalone}
\begin{document}
\begin{tikzpicture}
	\fill (-0.5,7.5) -- (1.5,7.5) -- (1.5,6) -- (1,5.5) -- (0,5.5) -- (-0.5,6) -- (-0.5,7.5);
	\fill[white] (-0.2,7.2) -- (1.2,7.2) -- (1.2,6.2) -- (0.8,5.8) -- (0.2,5.8) -- (-0.2,6.2) -- (-0.2,7.2);
	\clip (-0.2,7.2) -- (1.2,7.2) -- (1.2,6.2) -- (0.8,5.8) -- (0.2,5.8) -- (-0.2,6.2) -- (-0.2,7.2);
	\draw [help lines, step=0.1cm] (-0.2,5.8) grid (1.2,7.2);
\end{tikzpicture}
\end{document}

Verfasst: Mi 21. Dez 2016, 11:48
von Richard
Vielen dank!
Das funktioniert soweit.

Habe das ganze noch ein eine Scope Umgebung gepackt, da ich ansonsten danach nicht weiter zeichnen konnte.

Nur ist mir noch nicht ganz klar was dieses Clip eigentlich gewirkt?


Grüße
Richard

Verfasst: Mi 21. Dez 2016, 11:56
von esdd
Du kannst auch path picture nutzen, um die Fläche zu füllen:
\documentclass{scrbook}
\usepackage{tikz}   
\begin{document}
\begin{tikzpicture}
   \draw[line width=3mm]
   	[path picture={\draw [help lines, step=0.1cm] (current path bounding box.south west) grid (current path bounding box.north east);}]
    (-0.2,7.2) -- (1.2,7.2) -- (1.2,6.2) -- (0.8,5. -- (0.2,5. -- (-0.2,6.2) -- cycle;
\end{tikzpicture}
\end{document}
\clip schränkt den Zeichenbereich für den Rest der aktuellen scope auf den angegebenen Bereich ein. Alles was außerhalb davon liegt, wird weggeschnitten.