在 PStricks 中缩放颜色?

在 PStricks 中缩放颜色?

有没有办法缩放/重新映射/转换颜色在 pstricks 的图片中?

更详细:我有一些使用灰度颜色的 pstricks 代码。我想重新映射颜色[0,1][a,b], 在哪里0 <= a <= b <= 1

显然我可以做任何几何变换,例如:

\rput(0,0) % translating...
{
  \psscalebox{0.166} % scaling...
  {
    \psset{xunit=.5pt,yunit=.5pt,runit=.5pt} % changing units...
    \pspicture*(725,725)
      \input{./somepstricks.tex} % including alien pstricks-code
    \endpspicture%        
  }
}

但是我怎样才能在这里添加颜色变换somepstricks.tex呢?

一些额外的想法:

  • 我可以用两个透明的黑色和白色层叠加图片,并实现任意组合Ab(使用opacity属性)。问题:通常,很难准确地覆盖元素而不覆盖somepstricks.tex其他内容。在我不知道外部代码内容的情况下,我甚至不知道如何实现这一点。
  • 虽然我目前还不需要它,但我仍然很欣赏一些附加功能:
    • 包括颜色重新映射(不仅仅是灰度)
    • 支持非线性重映射
    • 允许饱和,即允许 a < 0 且 b > 1

答案1

您可以重新定义setgrayPostScript的功能:

\documentclass[a4paper]{article}
\usepackage{pstricks,multido}
\begin{document}

Color range from $0\cdots1$\\
\pspicture(10,4)
  \multido{\rA=0.0+0.2,\rB=0.0+0.05}{20}{%
    \psline[linewidth=2mm,linecolor={[gray]{\rB}}](0,\rA)(10,\rA)}
\endpspicture

\def\rLeft{0.2 } \def\rRight{0.6 }%  spaces!!
\pstVerb{%  redefine /setgray
  /savesetgray /setgray load def
  /setgray { % on the stack is the value for gray 
    \rRight \rLeft sub mul \rLeft add savesetgray } def 
}

\bigskip
Color range from $0.2\cdots0.6$\\
\pspicture(10,4)
  \multido{\rA=0.0+0.2,\rB=0.0+0.05}{20}{%
    \psline[linewidth=2mm,linecolor={[gray]{\rB}}](0,\rA)(10,\rA)}
\endpspicture

\end {document}

在此处输入图片描述

相关内容