tikzfillbetween 忽略控制点

tikzfillbetween 忽略控制点

我有一个简单的问题。我正在 TikZ 中创建示意图,但没有使用轴功能,我需要为 L 形(矩形的一部分)和使用控制点生成的样条线之间的区域着色。但是,tikzfillbetween 命令完全忽略了样条线的控制点,并将其视为其端点之间的直线。请告诉我如何修复它。我已附上了我的代码并附加了(不需要的)输出。

在此先感谢您的帮助。

席德

\documentclass[10pt]{article}
\usepackage[paperwidth=8.5in,paperheight=11.0in, left=1.25in,right=1.25in,top=1.25in,bottom=1.25in, includefoot]{geometry}               
\usepackage{graphicx}
\usepackage{float}
\usepackage{pgfplots}enter image description here
\usepgfplotslibrary{fillbetween}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{patterns}
\pgfplotsset{compat=1.12}

\begin{document}

\begin{figure}[H]
\begin{minipage}{\linewidth}
\centering
\begin{tikzpicture}
\draw[thick, black, name path=rect1] (0,4) -- (0,0) -- (4,0);
\draw[thick, black, name path=rect2] (4,0) -- (12,0) -- (12,4) -- (0,4);
\draw[thick, black, name path=topo] (0,4) .. controls (2.5,2.5) and (1.5,0)  .. (4,0);
\tikzfillbetween[of=rect1 and topo]{fill=gray,fill opacity=0.5,pattern=north east lines};
\end{tikzpicture}
\end{minipage} 
\end{figure} 

\end{document}

不期望的输出

答案1

请尝试以下操作:

\documentclass{article}
\usepackage[paperwidth=8.5in, paperheight=11.0in, 
            margin=1.25in, 
            includefoot]{geometry}
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}
    \begin{figure}
\centering
\begin{tikzpicture}
\draw[thick] (0,0) rectangle ++ (12,4);
\draw[thick, fill opacity=0.5,
      pattern=north east lines] (0,0) -- (0,4) .. controls (2.5,2.5) and (1.5,0)  .. (4,0);
\end{tikzpicture}
    \end{figure}
\end{document}

从您的序言中,我删除了与此解决方案不相关的所有包和库。如您所见,它不是有用的,\tikzfillbetween而是简单的fill

在此处输入图片描述

使用该\tikzfillbetween库时,您只需要给两个路径命名,例如,A哪个路径位于矩形的底部,B哪个路径以曲线命名:

\documentclass{article}
\usepackage[paperwidth=8.5in, paperheight=11.0in, 
            margin=1.25in, 
            includefoot]{geometry}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}

\begin{document}
    \begin{figure}
\centering
\begin{tikzpicture}
\draw[thick] (0,0) rectangle ++ (12,4);
\path[name path=A] (0,0) -- (12,0);  % <---
\draw[thick, name path=B] (0,4) .. controls (2.5,2.5) and (1.5,0) .. (4,0); % <---
\tikzfillbetween[of=A and B] {fill=gray, fill opacity=0.5, pattern=north east lines};
\end{tikzpicture}
    \end{figure}
\end{document}

结果和以前一样。

相关内容