TikZ - 완전하고 점진적인 수평 페이딩이 가능합니까?

TikZ - 완전하고 점진적인 수평 페이딩이 가능합니까?

왼쪽과 오른쪽의 일부 텍스트를 흐리게 하고 싶습니다. 나는 페이딩이 시각적으로 둘 다되기를 원합니다.

  • 진보적인
  • 완료(예: 페이딩이 끝나면 텍스트가 보이지 않게 됩니다)

나는 그런 예를 찾지 못했습니다.

제가 시도한 것을 5가지 예를 통해 설명하겠습니다. 내 페이딩은 오른쪽에서 왼쪽으로 진행되며 텍스트의 왼쪽 1/3 부근에서 끝납니다.

텍스트 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}

참고: 페이딩은완벽한(테두리를 보세요) 하지만 텍스트는 테두리까지 끝까지 가지 않기 때문에 계속 표시됩니다.

여기에 이미지 설명을 입력하세요

관련 정보