TikZ:矩形节点的发光

TikZ:矩形节点的发光

我想对包含一些文本的彩色节点使用发光效果。不幸的是,我只能找到密钥circular glow,请参阅下面的示例。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadows}

\begin{document}

\begin{tikzpicture}
\clip (-2, -3) rectangle (2,3);
\node[circular glow={fill=green}, rectangle, text width=2.5cm, align=justify] {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
\end{tikzpicture}

\end{document}

在此处输入图片描述

有没有办法得到一个具有与上面的圆形区域类似光辉的矩形彩色区域,即类似“矩形光辉”的东西?

答案1

您可以尝试将\shade阴影区域“划分”为四个部分,利用local bounding box选项来避免输入明确的坐标。

我还创建了一个\pic带有两个参数的 :在我的示例中,第一个是您想要着色的矩形区域的名称mybox;在我的示例中,第二个是您想要使用的颜色green
当然,您可以添加其他参数,例如用于着色的另一种颜色,在我的示例中,“白色”是固定的。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings, backgrounds}
\tikzset{
    pics/myshade/.style 2 args={
        code = {%
          \begin{scope}[on background layer]
            \shade[upper left=white, upper right=#2,
            lower left=white,lower right=white]
            (#1.south west) rectangle (#1.center);
            \shade[upper left=#2, upper right=white,
            lower left=white,lower right=white]
            (#1.south) rectangle (#1.east);
            \shade[upper left=white, upper right=white,
            lower left=#2,lower right=white]
            (#1.center) rectangle (#1.north east);
            \shade[upper left=white, upper right=white,
            lower left=white,lower right=#2]
            (#1.west) rectangle (#1.north);
          \end{scope}
        }
    }
}


\begin{document}
    \begin{tikzpicture}[local bounding box=mybox]
        \clip (-2, -3) rectangle (2,3);
        \pic {myshade={mybox}{green}};
        \node[rectangle, text width=2.5cm, align=justify] 
        {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

on background layer在您的情况下不需要该选项,但我添加了它以使图片myshade更加通用(避免它覆盖该区域,请参见以下示例,而不会将on background layer文本mynode隐藏在阴影下)。

只是为了展示如何使用图片myshade来阴影化任何矩形区域。边界框用红色阴影,节点用青色阴影:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings, backgrounds}
\tikzset{
    pics/myshade/.style 2 args={
        code = {%
          \begin{scope}[on background layer]
            \shade[upper left=white, upper right=#2,
            lower left=white,lower right=white]
            (#1.south west) rectangle (#1.center);
            \shade[upper left=#2, upper right=white,
            lower left=white,lower right=white]
            (#1.south) rectangle (#1.east);
            \shade[upper left=white, upper right=white,
            lower left=#2,lower right=white]
            (#1.center) rectangle (#1.north east);
            \shade[upper left=white, upper right=white,
            lower left=white,lower right=#2]
            (#1.west) rectangle (#1.north);
          \end{scope}
        }
    }
}


\begin{document}
    \begin{tikzpicture}[local bounding box=mybox]
        \clip (-2, -3) rectangle (2,3);
        \pic {myshade={mybox}{red}};
        \node[rectangle, text width=2.5cm, align=justify] (mynode)
        {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
        \pic {myshade={mynode}{cyan}};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

不是的。我们来看看手册:

手动的

因此,您可以尝试通过添加 来模拟某种光晕general shadow。如果您仔细选择scalefill color,效果会非常接近。

您还可以添加淡入淡出,查看其库,但它不提供您想要的缩放淡入淡出(仅 N,W,S,E,圆形)。

观点:就易读性而言,这drop shadow可能不是那么糟糕……顺便说一句,如果你需要这样的效果。请记住,TeX/LaTeX 起源于排版专业文档,如书籍。在很大程度上,它仍然抵制 MS-Office 路径……我喜欢这一点。通常情况下,这种更严格的方法有助于以不同的方式(如果不是更好的话)传达视觉信息。

我用足够大的边框替换了您的剪辑。

结果

\documentclass[border=6mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shadows}

\begin{document}

 \begin{tikzpicture}
%   \clip (-2, -3) rectangle (2,3);
    \node[
        circular glow={fill=green}, 
        rectangle,
        text width=2.5cm, 
        align=justify
    ] at (0,0)
    {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
    
    \node[
        general shadow={fill=green!45,shadow scale=1.05}, 
%       drop shadow, fill=green,
        rectangle, fill=green,
        text width=2.5cm, 
        align=justify
    ] at (5,0)
    {Given the rectangular text area, rectangular glow would be desirable to also cover the corners.};
    
 \end{tikzpicture}

\end{document}

相关内容