TikZ - 可以实现完整且渐进的水平衰落吗?

TikZ - 可以实现完整且渐进的水平衰落吗?

我想淡化一些文本,在其左侧和右侧。我希望淡化效果在视觉上同时具有以下特点:

  • 进步
  • 完成(即:当淡入淡出结束时,文本变得不可见)

我没有找到任何这样的例子。

我将用 5 个示例来说明我的尝试。我的淡入淡出是从右到左,并在文本的左三分之一处结束。

在文本 A 和 B 上,我使用白色渐变。在文本 C、D、E 上,我使用蓝色渐变。

我测试了两种策略:

  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}

注意:褪色是完全的(看边界)但文本仍然可见,因为它没有完全到达边界。

在此处输入图片描述

相关内容