- 有没有办法实现这种光栅图像的剪辑,而不仅仅是 tikz 图片? - 已解决,请参阅编辑#1。
- 有没有更简单的解决方案可以使用 TikZ 实现此目的? - 已解决,请参阅编辑#1。
- 如何让随机台阶线更加平滑一些?
这是我的最小工作示例:
\documentclass{article}
\usepackage{tikz}
\usepgflibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\fill[black](0, 0) rectangle (72pt, 72pt);
\end{tikzpicture}
\hspace{72pt}
\begin{tikzpicture}
\clip (0, 0) rectangle (72pt, 36pt);
\fill[black](0, 0) rectangle (72pt, 72pt);
\filldraw[white] (0pt, 0pt) -- (72pt, 0pt) -- (72pt, 7pt)
decorate [decoration={random steps,segment length=2pt,amplitude=1pt}] {-- (0pt, 7pt)}
-- cycle;
\end{tikzpicture}
\end{document}
编辑#1:我自己找到了一个更好的解决方案。我合并了clip
和filldraw
命令,因此在底部使用锯齿状随机线进行剪辑变得更容易一些。
工作代码:
\begin{tikzpicture}
\draw[clip] (0, 36pt)
-- (0, 7pt)
decorate [decoration={random steps,segment length=2pt,amplitude=1pt}] {-- (72pt, 7pt)}
-- (72pt, 36pt)
--cycle;
\fill[black](0, 0) rectangle (72pt, 72pt);
\end{tikzpicture}
剪切一个 72pt * 72pt 的 png 图像(或任何光栅图像):
\begin{tikzpicture}
\draw[clip] (0, 36pt)
-- (0, 7pt)
decorate [decoration={random steps,segment length=2pt,amplitude=1pt}] {-- (72pt, 7pt)}
-- (72pt, 36pt)
--cycle;
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=72pt]{black.png}};
\end{tikzpicture}
不过,还有两个问题尚未解答。让我重新表述一下我最初的第三个问题:
- 如何将随机台阶线的边缘弄圆?
以简单的方式剪辑图片会引发另一个问题:
- 有没有办法在开始时建立一个坐标系
tikzpicture
,这样在剪辑时不必使用精确的长度而是使用缩放?
答案1
我的问题的第一部分已经在问题本身中得到回答,请参阅编辑#1。
对于圆角和在剪辑过程中处理长度时使用 [0,1] 间隔,我想出了这个解决方案:
\begin{tikzpicture}[x=72pt,y=36pt]
\draw[clip] (0, 1)
-- (0, 0.2)
decorate [decoration={random steps,segment length=4pt,amplitude=2pt},
rounded corners=1pt] {-- (1, 0.1)}
-- (1, 1)
--cycle;
\node[anchor=south west,inner sep=0] (image) at (0,0)
{\includegraphics[width=72pt]{black.png}};
\end{tikzpicture}
首先,我rounded corners
向装饰路径添加了选项。其次,我在开始时指定了 tikzpicture 的确切大小:\begin{tikzpicture}[x=72pt,y=36pt]
。这可能不是最优雅的解决方案,但效果很好,请参见下图(蓝色框显示了原始图片的大小)。