TikZ - Возможно ли полное и постепенное горизонтальное затухание?

TikZ - Возможно ли полное и постепенное горизонтальное затухание?

Я хотел бы сделать плавный переход текста слева и справа. Я хочу, чтобы плавный переход был визуально и тем, и другим:

  • прогрессивный
  • завершение (т.е. когда исчезновение заканчивается, текст становится невидимым)

Я не нашел ни одного примера.

Я проиллюстрирую то, что я попробовал, на 5 примерах. Мое затухание происходит справа налево и заканчивается где-то в левой трети текста.

На текстах A и B я использую белое выцветание. На текстах C, D, E я использую синее выцветание.

Я протестировал 2 стратегии:

  1. Использую tikzfading (пример A). Но мой текст не становится полностью невидимым. Затухание не "полное".
  2. Рисуем несколько маленьких вертикальных полосок. Мне не нравится этот метод, но результат больше соответствует моим ожиданиям. Но когда я печатаю документ или увеличиваю масштаб, я вижу полоски :-(

Как добиться полного выцветания, как в варианте B (или C), но без полос?

\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 примеров

зум B

решение1

Увяданиеделаетстановятся невидимыми, но только в самом конце. Проблема в том, что выцветание недостаточно сильное вблизи выцветшего конца. Вы можете задать middle color=transparent!50, что даст вам исходное изображение:

введите описание изображения здесь

Настройка middle color=transparent!10плавного изменения от 0% до 10% в первой половине, от 10% до 100% во второй половине, что дает

введите описание изображения здесь

Если вы установите, middle color=transparent!2вы получите

введите описание изображения здесь

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

решение2

Вот решение:

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

Примечание: выцветаниеполный(обратите внимание на границы), но текст остается видимым, поскольку он не доходит до границ.

введите описание изображения здесь

Связанный контент