Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3
separates Laden von pgf entfernt

26 Feb '14, 17:32

Speravir's gravatar image

Speravir
497139

Ich habe jetzt etwas rumgespielt und habe folgendes erstellt: \documentclass{article} \usepackage{pgf} \usepackage{tikz} \makeatletter \pgfdeclareshape{computer}{% % inherit anchors \inheritsavedanchors[from=rectangle] \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \backgroundpath{ %%% DRAW OUTLINE OF SHAPE %%% % store lower left in xa/ya and upper right in xb/yb \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y % move to point xb/yb (north east) \pgfpathmoveto{\pgfpoint{\pgf@xb}{\pgf@yb}} % draw a line between upper right (xb,yb) and upper left (xa,yb) \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} \pgfpathlineto{\pgfpoint{\pgf@xa}{.2\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xa}{.2\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xa}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xb}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xb}{.2\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.2\pgf@ya}} \pgfpathclose %%% DRAW SCREEN %%% \color{black} \pgfpathmoveto{\pgfpoint{.85\pgf@xb}{.85\pgf@yb}} \pgfpathlineto{\pgfpoint{.85\pgf@xa}{.85\pgf@yb}} \pgfpathlineto{\pgfpoint{.85\pgf@xa}{.05\pgf@ya}} \pgfpathlineto{\pgfpoint{.85\pgf@xb}{.05\pgf@ya}} \pgfpathclose %%% DRAW UPPER RECTANGLE OF CASE %%% \pgfpathmoveto{\pgfpoint{\pgf@xa}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.5\pgf@ya}} \pgfpathclose %%% DRAW LEFT TRIANGLE %%% \color{gray} \pgfpathmoveto{\pgfpoint{\pgf@xa}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}} \pgfpathlineto{\pgfpoint{.5\pgf@xa}{\pgf@ya}} \pgfpathclose %%% DRAW RIGHT TRIANGLE %%% \color{gray} \pgfpathmoveto{\pgfpoint{\pgf@xb}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{.5\pgf@xb}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} \pgfpathclose } } \makeatother \tikzset{ shape example/.style={ color=black!30, draw, fill=yellow!30, line width=.1cm, inner xsep=2.5cm, inner ysep=2.5cm } } \begin{document} \begin{tikzpicture} \node[shape example, computer, name=s] at (0,0) {}; \foreach \anchor/\placement in {north/above, west/left, center/above, east/right, south/below} \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)} node[\placement] {\scriptsize\texttt{(s.\anchor)}}; \end{tikzpicture} \end{document} Das Ergebnis sieht wie folgt aus: ![Shape in Tikz][1] [1]: http://texwelt.de/wissen/upfiles/Step5.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

26 Feb '14, 16:40

funkytex's gravatar image

funkytex
177337

Ich habe jetzt etwas rumgespielt und habe folgendes erstellt: \documentclass{article} \usepackage{pgf} \usepackage{tikz} \makeatletter \pgfdeclareshape{computer}{% % inherit anchors \inheritsavedanchors[from=rectangle] \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \backgroundpath{ %%% DRAW OUTLINE OF SHAPE %%% % store lower left in xa/ya and upper right in xb/yb \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y % move to point xb/yb (north east) \pgfpathmoveto{\pgfpoint{\pgf@xb}{\pgf@yb}} % draw a line between upper right (xb,yb) and upper left (xa,yb) \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} \pgfpathlineto{\pgfpoint{\pgf@xa}{.2\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xa}{.2\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xa}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xb}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{.3\pgf@xb}{.2\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.2\pgf@ya}} \pgfpathclose %%% DRAW SCREEN %%% \color{black} \pgfpathmoveto{\pgfpoint{.85\pgf@xb}{.85\pgf@yb}} \pgfpathlineto{\pgfpoint{.85\pgf@xa}{.85\pgf@yb}} \pgfpathlineto{\pgfpoint{.85\pgf@xa}{.05\pgf@ya}} \pgfpathlineto{\pgfpoint{.85\pgf@xb}{.05\pgf@ya}} \pgfpathclose %%% DRAW UPPER RECTANGLE OF CASE %%% \pgfpathmoveto{\pgfpoint{\pgf@xa}{.5\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{.5\pgf@ya}} \pgfpathclose %%% DRAW LEFT TRIANGLE %%% \color{gray} \pgfpathmoveto{\pgfpoint{\pgf@xa}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}} \pgfpathlineto{\pgfpoint{.5\pgf@xa}{\pgf@ya}} \pgfpathclose %%% DRAW RIGHT TRIANGLE %%% \color{gray} \pgfpathmoveto{\pgfpoint{\pgf@xb}{.65\pgf@ya}} \pgfpathlineto{\pgfpoint{.5\pgf@xb}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} \pgfpathclose } } \makeatother \tikzset{ shape example/.style={ color=black!30, draw, fill=yellow!30, line width=.1cm, inner xsep=2.5cm, inner ysep=2.5cm } } \begin{document} \begin{tikzpicture} \node[shape example, computer, name=s] at (0,0) {}; \foreach \anchor/\placement in {north/above, west/left, center/above, east/right, south/below} \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)} node[\placement] {\scriptsize\texttt{(s.\anchor)}}; \end{tikzpicture} \end{document} Das Ergebnis sieht wie folgt aus: ![alt text][1] Nun habe ich aber noch das Problem mit dem Einfärben bzw. mit dem Shading des Screens. Ich habe versucht mit `\pgfusepath{fill}` die Flächen zu füllen, aber da ist gleich das ganze Shape eingefärbt worden. Dann habe ich versucht die Paths die ich füllen möchte ![Shape in ein Scope zu packen, was aber nicht geklappt hat. Nun zur konkreten Frage: wie kann ich die Flächen (Screen und Triangles) noch einfärben? Tikz][1] [1]: http://texwelt.de/wissen/upfiles/Step5.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

26 Feb '14, 16:12

funkytex's gravatar image

funkytex
177337