TikZ – Vollständiges und fortschreitendes horizontales Überblenden möglich?

TikZ – Vollständiges und fortschreitendes horizontales Überblenden möglich?

Ich möchte Text links und rechts ausblenden. Ich möchte, dass die Ausblendung beides visuell ermöglicht:

  • progressiv
  • vollständig (d. h.: wenn die Ausblendung endet, wird der Text unsichtbar)

Ich habe dafür kein Beispiel gefunden.

Ich werde meinen Versuch anhand von 5 Beispielen veranschaulichen. Mein Ausblenden erfolgt von rechts nach links und endet etwa im linken Drittel des Textes.

Bei den Texten A und B verwende ich einen weißen Farbverlauf. Bei den Texten C, D und E verwende ich einen blauen Farbverlauf.

Ich habe 2 Strategien getestet:

  1. Tikzfading verwenden (Beispiel A). Aber mein Text wird nicht vollständig unsichtbar. Das Ausblenden ist nicht „vollständig“.
  2. Zeichnen mehrerer kleiner vertikaler Streifen. Mir gefällt die Methode nicht, aber das Ergebnis entspricht eher meinen Erwartungen. Aber wenn ich das Dokument drucke oder hineinzoome, kann ich die Streifen sehen :-(

Wie kann ich ein vollständiges Ausblenden wie in B (oder C), aber ohne die Streifen erreichen?

\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\tikzfading[name=fade example,left color=transparent!0,right color=transparent!100]
\begin{document}
{
    \begin{tikzpicture}           
    \draw((2,4) node[fill=white!80, text=black] {AAAAAAAAAAAAAAAAAAAA} ;
    \filldraw [draw=none, white, path fading=fade example] (1,3.5) rectangle (3,4.5);
    \end{tikzpicture}   
    
    \begin{tikzpicture}
    \draw((1,0.5) node[fill=white!80, text=black] {BBBBBBBBBBBBBBBBBBBBB} ;
    \foreach \x in {0,0.01,...,2.0}
    \filldraw [draw=none, white, opacity=\x/2.0] (2.0 - \x, 0) rectangle (1.96-\x, 1);
    \end{tikzpicture}
    
    \begin{tikzpicture}
    \draw((1,0.5) node[fill=white!80, text=black] {CCCCCCCCCCCCCCCCCCCCCC} ;
    \foreach \x in {0,0.01,...,2.0}
    \filldraw [draw=none, blue, opacity=\x/2.0] (2.0 - \x, 0) rectangle (1.96-\x, 1);
    \end{tikzpicture}   
    
    \begin{tikzpicture}
    \draw((1,0.5) node[fill=white!80, text=black] {DDDDDDDDDDDDDDDDDDDDDDD} ;
    \foreach \x in {0,0.001,...,2.0}
    \filldraw [draw=none, blue, opacity=\x/2.0] (1.999 - \x, 0) rectangle (2.0-\x, 1);
    \end{tikzpicture}
    
    \begin{tikzpicture}
    \draw((1,0.5) node[fill=white!80, text=black] {EEEEEEEEEEEEEEEEEEEEEEEE} ;
    \foreach \x in {0,0.001,...,2.0}
    \filldraw [draw=none, blue, opacity=\x/2.0] (1.999 - \x, 0) rectangle (2.001-\x, 1);
    \end{tikzpicture}

}
\end{document}

5 Beispiele

Zoom B

Antwort1

Das Verblassentutunsichtbar werden, aber nur ganz am Ende. Das Problem ist, dass das Verblassen am verblassenden Ende nicht stark genug ist. Sie können einstellen middle color=transparent!50, wodurch Ihr Originalbild erzeugt wird:

Bildbeschreibung hier eingeben

Die Einstellung middle color=transparent!10geht von 0% auf 10% in der ersten Hälfte, von 10% auf 100% in der zweiten Hälfte, was

Bildbeschreibung hier eingeben

Wenn Sie setzen, middle color=transparent!2erhalten Sie

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\tikzfading[name=fade example,left color=transparent!0,right color=transparent!100,middle color=transparent!2]

\begin{document}
    \begin{tikzpicture}           
    \draw((2,4) node[fill=white, text=black] {AAAAAAAAAAAAAAAAAAAA} ;
    \filldraw [draw=none, white, path fading=fade example] (1,3.5) rectangle (3,4.5);
    \end{tikzpicture}  
\end{document}

Antwort2

Hier ist eine Lösung:

\documentclass[tikz]{standalone}
\usetikzlibrary{fadings}
\tikzfading[name=fade example,left color=transparent!0,right color=transparent!0,middle color=transparent!100]
\begin{document}

\begin{tikzpicture}           
  \node[draw,fill=white!80,text=black] (my text) {AAAAAAAAA} ;
  \filldraw [draw=none, white, path fading=fade example] (my text.south west) rectangle (my text.north east);
\end{tikzpicture}   

\end{document}

Hinweis: Das Ausblenden istvollständig(Ränder beachten), aber der Text bleibt sichtbar, da er nicht bis zu den Rändern reicht.

Bildbeschreibung hier eingeben

verwandte Informationen