对嵌入在 Pspicture 中的 Norman 窗口图像进行着色

对嵌入在 Pspicture 中的 Norman 窗口图像进行着色

这篇文章是 如何精确地裁剪出诺曼窗的形状

考虑将诺曼窗图像嵌入到其中的代码pspicture

\documentclass{book}
\usepackage{tikz,pstricks,xcolor,graphicx}


% Compile with Xelatex

\newsavebox\IBox
\savebox\IBox{\includegraphics[width=12em,height=15em]{example-image}}

\begin{document}
\thispagestyle{empty}
\begin{pspicture}(-4,-4)(4,8)%
\psframe[fillcolor=red,fillstyle=solid](-4,-4)(4,8)
\rput(0,2.5){\begin{tikzpicture}
\clip (0,0) -- (\wd\IBox,0) -- (\wd\IBox, \ht\IBox-0.5*\wd\IBox)
arc[start angle=0, end angle=180, radius={0.5\wd\IBox}] -- cycle;
\node[inner sep=0pt, above right] at (0,0) {\usebox\IBox};
\end{tikzpicture}}
\end{pspicture}%
\end{document}

产生图像

在此处输入图片描述

问题:使用 编译代码Xelatex,我怎样才能将 Norman Window 着色为蓝色?

谢谢。

答案1

\documentclass[border=12pt]{standalone}
\usepackage{pstricks}

\begin{document}
%\psset{unit=2}
\begin{pspicture}[showgrid=true](-3,-3)(9,9)
\psframe*[linecolor=blue](-3,-3)(9,9)
\psclip{%
  \pscustom[linestyle=none,dimen=middle]{%
    \psline(6,0)(6,3)
    \psarc(3,3){3}{0}{180}
    \psline(0,0)
  }}
\psframe*[linecolor=red](-3,-3)(9,9)
\endpsclip
\end{pspicture}
\end{document}

在此处输入图片描述

您可以使用简单的而不用剪辑\pscustom

答案2

自然步骤:

  • 将图像放在底层
  • 将窗框放在顶部

最重要的概念是在窗口框架中。透明区域是由于奇偶规则

删除pspicture*画布外的图像部分。

在此处输入图片描述

\documentclass[pstricks,border=1cm]{standalone}
\usepackage{graphicx}
\newbox\IBox
\savebox\IBox{\includegraphics[scale=1]{example-image-a}}

\begin{document}
\begin{pspicture*}[showgrid=t](-2,-2)(2,4)
\rput(0,0){\usebox\IBox}
\end{pspicture*}

\begin{pspicture*}[showgrid=t](-2,-2)(2,4)
\pscustom[dimen=m,linejoin=2,fillstyle=solid,fillcolor=red]{%
    \psline(2,4)(2,-2)(-2,-2)(-2,4)\closepath% clockwise
    \psarc[liftpen=2](0,2){1}{0}{180}\psline(-1,2)(-1,-1)(1,-1)(1,2)\closepath% counter-clockwise
}
\end{pspicture*}

\begin{pspicture*}[showgrid=t](-2,-2)(2,4)
\rput(0,0){\usebox\IBox}
\pscustom[dimen=m,linejoin=2,fillstyle=solid,fillcolor=red]{%
    \psline(2,4)(2,-2)(-2,-2)(-2,4)\closepath% clockwise
    \psarc[liftpen=2](0,2){1}{0}{180}\psline(-1,2)(-1,-1)(1,-1)(1,2)\closepath% counter-clockwise
}
\end{pspicture*}
\end{document}

注意:最后一个pspicture*可能是您要使用的输出。其他的都是故意添加的,只是为了创建动画。因此您需要在作品中删除前pspicture*两个。showgrid=t

相关内容