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}

相關內容