买者自负!

买者自负!

我正在组装几个矩形来制作特殊的阴影。

这是我的代码:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{fadings}
\begin{document}
\begin{tikzpicture}

\coordinate(A) at (1.5,4);
\coordinate(I) at (1.6,4); 
\coordinate(J) at (2,4); 
\coordinate(K) at (2.45,4);

\foreach \x in {0} 
\fill ([shift=(A)]6*\x,0) rectangle +(1,-0.3);
\foreach \x in {0}
\tikzfading[name=F1, left color=transparent!60, right color=transparent!5]
\fill [white, path fading=F1] ([shift=(A)]6*\x,0) rectangle +(0.1,-0.3);
\foreach \x in {0}
\tikzfading[name=F2, left color=transparent!5, right color=transparent!5]
\fill [white, path fading=F2] ([shift=(I)]6*\x,0) rectangle +(0.4,-0.3);
\foreach \x in {0} 
\tikzfading[name=F3, left color=transparent!5, right color=transparent!70]
\fill [white, path fading=F3] ([shift=(J)]6*\x,0) rectangle +(0.45,-0.3);
\foreach \x in {0} 
\tikzfading[name=F4, left color=transparent!70, right color=transparent!100]
\fill [white, path fading=F4] ([shift=(K)]6*\x,0) rectangle +(0.05,-0.3);
\foreach \x in {0} 
\draw [thick] ([shift=(A)]6*\x,0) rectangle +(1,-0.3); 

\end{tikzpicture}
\end{document}  

问题在于矩形之间存在不连续性,如下图所示(参见红色箭头)。我该如何解决这个问题?

我尝试了非常小的重叠,但要么是不够,有时我仍然可以看到间隙(取决于放大倍数),要么我可以看到重叠并且看起来很丑陋......

在此处输入图片描述

答案1

我认为,正确的方法是定义一个自定义阴影,它可以用来直接为矩形添加阴影或创建淡入淡出效果。

但是,我不确定以下示例是否是定义自定义阴影的正确方法。我以前只创建过自定义径向阴影,它们总是让我感到困惑!

买者自负!

请注意,当使用阴影填充矩形时,仅显示阴影的中心四分之一,而正常使用的阴影应为100x100 bp。因此,自定义阴影实际上从 开始25 bp,到 结束75 bp。我为两个极端使用了合理的颜色(在某些旋转等情况下可能会显示),但如果需要考虑,则可能需要进行调整。

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{fadings}
\pgfdeclarehorizontalshading[f0col,f1col,f2col,f3col,f4col,f5col]{special shading}{100bp}{%
  color(0bp)=(f0col);
  color(25bp)=(f1col);
  color(30bp)=(f2col);
  color(50bp)=(f3col);
  color(72bp)=(f4col);
  color(75bp)=(f5col);
  color(100bp)=(f5col)
}
\tikzset{%
  special colour 0/.code={%
    \colorlet{f0col}{#1}%
  },
  special colour 1/.code={%
    \colorlet{f1col}{#1}%
  },
  special colour 2/.code={%
    \colorlet{f2col}{#1}%
  },
  special colour 3/.code={%
    \colorlet{f3col}{#1}%
  },
  special colour 4/.code={%
    \colorlet{f4col}{#1}%
  },
  special colour 5/.code={%
    \colorlet{f5col}{#1}%
  },
  special colours/.style args={#1,#2,#3,#4,#5,#6}{%
    special colour 0=#1,
    special colour 1=#2,
    special colour 2=#3,
    special colour 3=#4,
    special colour 4=#5,
    special colour 5=#6,
  },
  special colours={black!0,black!60,black!5,black!5,black!70,black!100},
  special shading/.style={%
    shading=special shading,
  },
}
\tikzfading[name=special fading, special shading, special colours={transparent!0,transparent!60,transparent!5,transparent!5,transparent!70,transparent!100}]
\begin{document}
\begin{tikzpicture}
  \fill \foreach \i in {-.3,.3,...,1.6} {(0,\i) rectangle +(1,.3)};
  \path [special shading] (0,0) rectangle (1,-.3);
  \path [special shading, special colour 2=red] (0,.3) rectangle +(1,.3);
  \path [special shading, special colours={red,orange,yellow,green,blue,purple,violet}] (0,.9) rectangle +(1,.3);
  \fill [path fading=special fading, white]  (0,1.5) rectangle +(1,.3);
  \draw [thick] \foreach \i in {-.3,.3,...,1.6} {(0,\i) rectangle +(1,.3)};
\end{tikzpicture}
\end{document}

这是结果。顶部矩形使用阴影来创建淡入淡出效果,使白色淡入淡出覆盖黑色,就像问题中那样。底部阴影直接填充矩形。中间的两个阴影说明了可以自定义一种或多种或所有颜色的方式。(transparent当然,在创建淡入淡出效果时,这也与颜色一起使用。)

自定义阴影和褪色

我无法分辨出这与 OP 生成的结果之间的区别,因为即使放大到最大 1,600%,我也看不到原始缺陷。但是,由于这使用封闭路径进行填充,我认为它应该完全避免这个问题。

相关内容