如何填充路径一侧的所有内容

如何填充路径一侧的所有内容

假设我有一些图像。我想使用双线弧“切掉”图像的一部分(请参阅 TikZ/PGF 手册第 110 页)。这可以通过以下 MWE 完成

documentclass[tikz]{standalone}
\usetikzlibrary{arrows,shapes,backgrounds,fit,decorations.pathreplacing,chains,positioning,angles,quotes, fadings}  
\usepackage{xcolor}    
\begin{tikzpicture}

\node at (0,0){\includegraphics{SampleImage.png}};
  \coordinate (O) at (0.6,1.962);
  \coordinate (A) at (2.82,0.35);
  \coordinate (O1) at (0.665,1.962);
  \coordinate (A1) at (2.82,0.414);

  \draw[line width=0.62pt,double distance=2pt] (O) to [bend right=44] (A);
  \draw [red] (O1) to [bend right=44] (A1);
\end{tikzpicture}

\end{document}

就这个问题而言,SampleImage.png这里只要将其视为框即可:\filldraw[black!50] (0,0) -- (0,1.962) -- (2.82,1.962) -- (2.82,0) -- cycle;

问题是:如何用白色填充双线圆弧右侧的所有内容,以便圆弧右侧的所有内容都消失?我使用了Filling a PathTikZ 手册第 110 页上的部分:。但是,填充不会覆盖右上角。

目前,我的解决方法是创建另一条路径(上面的红线),该路径要大得多,以便正确的图像覆盖然后我将此路径转换为\filldraw[white]

我正在寻找一种比这种蛮力方法更有效的方法。

答案1

您可以使用

\fill[white] ([yshift=1pt]O) to [bend right=44] ([xshift=1pt]A) |- cycle;

如同

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}

%\node at (0,0){\includegraphics{SampleImage.png}};
  \filldraw[black!50] (0,0) -- (0,1.962) -- (2.82,1.962) -- (2.82,0) -- cycle;
  \coordinate (O) at (0.6,1.962);
  \coordinate (A) at (2.82,0.35);
  \coordinate (O1) at (0.665,1.962);
  \coordinate (A1) at (2.82,0.414);
  \fill[white] ([yshift=1pt]O) to [bend right=44] ([xshift=1pt]A) |- cycle;
  \draw[line width=0.62pt,double distance=2pt] (O) to [bend right=44] (A);

  \draw [red] (O1) to [bend right=44] (A1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

这里的|- cycle意思是“通过矩形角关闭路径”,并且引入了一些小的偏移以确保所有内容都被覆盖(在图形中可能不需要偏移,它们来自于\filldraw将线宽添加到填充区域)。

如果您想要虚线,可以使用preactionpost action。由于可能存在与查看器相关的伪影,因此最好在顶部添加另一条白线。

\documentclass[tikz]{standalone} 
\begin{document}
\begin{tikzpicture}
%\node at (0,0){\includegraphics{SampleImage.png}};
  \filldraw[black!50] (0,0) -- (0,1.962) -- (2.82,1.962) -- (2.82,0) -- cycle;
  \coordinate (O) at (0.6,1.962);
  \coordinate (A) at (2.82,0.35);
  \coordinate (O1) at (0.665,1.962);
  \coordinate (A1) at (2.82,0.414);
  \fill[white] ([yshift=1pt]O) to [bend right=44] ([xshift=1pt]A) |- cycle;
  \draw[preaction={solid,double=white,line width=0.62pt,double distance=2pt},
     draw=black,double distance=2pt,line width=0.62pt,dashed,
     postaction={solid,draw=white,line width=2pt}] (O) to
     [bend right=44] (A);
  \draw [red] (O1) to [bend right=44] (A1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容