TikZ:如何用颜色填充形状的一部分

TikZ:如何用颜色填充形状的一部分

shape如何用颜色填充两个位置之间的部分?有没有使用“路径图片”等的简单方法?

附言:·我知道这个任务有例子,但这些例子大多是路径,而不是形状。
·是的,应该有一个强力解决方案(通过画弧)在这种情况下也一样。
但是我问自己,除了设置一些键等之外,是否还有其他优雅的方法。
我需要填充大量的部分,我正在寻找一种系统的方法,而不是如何快速创建所示的图片(注意:这只是一个例子)。

梅威瑟:

在此处输入图片描述

\documentclass[]{book}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}[font=\tiny\sffamily, very thin]
\node[rounded rectangle, draw, inner sep=0pt,
line width=5mm, 
minimum width=40mm, minimum height=20mm, 
](s){*};

\draw[brown] (s.center) -- +(s.0);

\draw[red] (s.center) -- ++(s.north east) -- ++(0,-10mm-2.5mm);
\draw[red] (s.center) -- ++(s.north east) -- ++(0,-10mm-2.5mm);
\end{tikzpicture}
\end{document}

答案1

我有时间思考一些更好的、更模块化的东西,我希望它能回答你的问题。

我用了一个pic我将其定义为:

\begin{tikzpicture}[
    dashedrect/.pic={ 
            \draw  [red] (0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle; % draw the red rect
            \draw  [dash pattern= #1] 
            (0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle;
        }
    ]   

图片表示根据 4 个点定义的路径绘制一个矩形。该参数#1将用于发送值dash pattern

然后我可以像这样在坐标或节点上绘制图片:

\coordinate (s) at (0,0);
\pic at (s) {dashedrect=on 20 off 10};
\pic at (2,2) {dashedrect= on 5 off 25 on 10};

在此处输入图片描述 这是通过图片证明模块化的概念。

我可以在图片内画任何东西。那么我们来改变图片的定义:

\begin{tikzpicture}[
    font=\tiny\sffamily,
    very thin,
    dashedrect/.pic={ % <-- defined a pic  
            \draw  [thick,red] 
            (0,0) arc[radius=0.5cm, start angle=270, end angle=90]  --  (1,1) arc[radius=0.5cm, start angle=90, end angle=-90] (1,0) --  (0,0);
            \draw  [thick,dash pattern= #1] 
            (0,0) arc[radius=0.5cm, start angle=270, end angle=90]  --  (1,1) arc[radius=0.5cm, start angle=90, end angle=-90] (1,0) --  (0,0);
        }
    ]   
\coordinate (s) at (0,0);
\pic at (s) {dashedrect=on 20 off 10};
\pic at (2,2) {dashedrect= on 5 off 25 on 10};
\end{tikzpicture}

在此处输入图片描述

我可以继续在图片中绘制任何东西。

答案2

我找到了一个解决方案clip

在此处输入图片描述

\documentclass[margin=5mm, tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}[
mystyle/.style={rounded rectangle, draw, inner sep=0pt,
line width=5mm, 
minimum width=40mm, minimum height=20mm, },
]
% Main node
\node[mystyle](s){*};
% Help Lines
\draw[brown] (s.center) -- +(s.0);
\draw[brown] (s.center) -- +(s.north east);
% Colored Part
\begin{scope}[]
\clip (s.0) rectangle (s.north east);
\node[mystyle, red](s colored part){*};
\end{scope}
\end{tikzpicture}
\end{document}

相关内容