TikZ - É possível desbotamento horizontal completo e progressivo?

TikZ - É possível desbotamento horizontal completo e progressivo?

Eu gostaria de esmaecer algum texto, à esquerda e à direita. Quero que o desbotamento seja visualmente ambos:

  • progressivo
  • completo (ou seja: quando o esmaecimento termina, o texto fica invisível)

Não encontrei nenhum exemplo disso.

Vou ilustrar o que tentei com 5 exemplos. Meu esmaecimento é da direita para a esquerda e termina no terço esquerdo do texto.

Nos textos A e B, utilizo um desbotamento branco. Nos textos C, D, E, utilizo um desbotamento azul.

Testei 2 estratégias:

  1. Usando tikzfading (exemplo A). Mas meu texto não fica completamente invisível. O desbotamento não é “completo”.
  2. Desenhando várias pequenas listras verticais. Não gosto do método, mas o resultado é mais o que espero. Mas quando imprimo o documento, ou quando amplio, consigo ver as listras :-(

Como posso conseguir um desbotamento completo como em B (ou C), mas sem as listras?

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

ampliar B

Responder1

O desbotamentofaztornar-se invisível, mas apenas no final. A questão é que o desbotamento não é suficientemente grave perto do final desbotado. Você pode definir middle color=transparent!50o que produzirá sua imagem original:

insira a descrição da imagem aqui

A configuração middle color=transparent!10desaparece de 0% a 10% na primeira metade, de 10% a 100% na segunda metade, o que produz

insira a descrição da imagem aqui

Se você definir middle color=transparent!2você obtém

insira a descrição da imagem aqui

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

Responder2

Aqui está uma solução:

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

Nota: o desbotamento écompleto(veja as bordas), mas o texto permanece visível porque não vai até as bordas.

insira a descrição da imagem aqui

informação relacionada