简单问题:
是否可以填充以下形状:
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{documet}
\begin{tikzpicture}
\draw [decorate,decoration = {snake,amplitude =.4mm, segment length = 5mm}] (0,0)--(10,0);
\draw (0,0)..controls(0,-1)and(10,-1)..(10,0);
\end{tikzpicture}
\end{document}
如果这个问题过于简单,请原谅。
答案1
填充复杂形状的典型方法是尝试将我们的区域想象为两个更简单的闭合路径的交点,然后填充其中一条路径的区域,同时剪切到另一条路径。
例如,您的区域可以看作是以下两条路径的交点:
\draw (0,0) .. controls +(0,-1) and +(0,-1)..(10,0) -- (10,1) -- (0,1) --cycle ;
\draw [decorate,decoration = {snake,amplitude =.4mm, segment length = 5mm}] (0,0)--(10,0) -- (10,-1) -- (0,-1) -- cycle;
因此,我们的想法是填充“波浪形矩形”,并将结果剪切到“弯曲的底部矩形”。执行此技巧的代码部分必须包含在内,scope
以防止剪切应用于整个图形(以防它是更大图形的一部分)。
下面的代码实现了这个想法:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\clip (0,0) .. controls +(0,-1) and +(0,-1)..(10,0) -- (10,1) -- (0,1) --cycle ;
\draw [fill=orange!50, decorate,decoration = {snake,amplitude =.4mm, segment length = 5mm}] (0,0)--(10,0) -- (10,-1) -- (0,-1) --cycle ;
\end{scope}
\draw (0,0) ..controls +(0,-1)and +(0,-1)..(10,0);
\end{tikzpicture}
\end{document}
答案2
在这个简单的例子中,您可以只使用一条填充的路径。
几点说明:
该装饰是用 激活的
decorate {<part of path that shall be decorated>}
,所以我们将(0,0) -- (10,0)
其放入。控制语法理解我引入的相对坐标,因为我需要切换曲线的方向(现在从 到
(10, 0)
)(0, 0)
。除了
.. controls (<c1>) and (<c2>) ..
语法之外,您还可以使用curve to
路径。在本例中,将角度设置为 270 度,距离为1cm
:to[distance=1cm, out=270, in = 270] (water-start)
-- cycle
一开始就做出了漂亮的线条。我还引入了两个坐标:
water-start
和water-end
。
由于
water-start
在路径中使用了两次,因此\coordinate
如果您想从其他地方开始而不是路径中的两个值,现在只需要更改该行。
代码
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\coordinate (water-start) at (0,0);
\coordinate (water-end) at (10,0);
\draw[
decoration={
snake,
amplitude =.4mm,
segment length = 5mm
},
fill=blue
] decorate {(water-start) -- (water-end)}
% .. controls +(0,-1) and +(0,-1) .. (water-start) % this is the same
to[distance=1cm, out=270, in = 270] (water-start) % as this
-- cycle
;
\end{tikzpicture}
\end{document}
输出
答案3
如 TIKZ/PGF-3.0 手册第节所述24.2 使用装饰路径命令装饰子路径这可以通过装饰路径命令来实现。
\draw[fill=orange!50] (0,0) -- (0,1) -- (1,1) decorate[decoration=snake] {-- (1,0)} -- cycle;
答案4
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}[dimen=monkey](-4,-2)(4,0)
\pscustom[fillstyle=solid,fillcolor=cyan]
{
\psplot[algebraic,plotpoints=150]{-4}{4}{.1*sin(2*Pi*x/(8/15))}
\psellipticarcn(4,2){0}{180}
\closepath
}
\end{pspicture}
\end{document}