我的目的是制作一个部分不透明的图像。
我为了实现目标所采用的想法:
文件A
- 创建一个 tikz 图像[这是一个复杂的部分]。
文件 B
- 使用范围 + 不透明度包含文件 A
\import
- 创建一个复合体
\path[clip]
并将文件 A 包含在此范围内(带剪辑)。
\includestandalone
使用inside 的结果\node
有效(见下图)。但是,将结果导入第三个文件时,出现了缩放问题,即文件 B 的剪切部分没有按预期缩放。(也许,这是我的真正问题)。
因此,我已删除\node
+\includestandalone
并备份以使用\import
,我已经在文件 C 中使用它来包含文件 A(并且它可以正常工作)。
不幸的是,现在它只会创造
文件 B 中的输出为空。
调试注意事项1:文件B\import
在环境中执行文件A \tikzpicture
,而文件C以普通方式执行文件A。
调试注意事项 2:\draw
虽然没有绘制矩形,但添加 1-2 页长的矩形描绘了文件 A。
由于 MWE [即将简单绘图推送到文件 A] 可以按预期工作,我认为问题出在我的实际代码中,以及我在文件 A 中使用了较大但缩小的图像这一事实。
文件A代码:
\documentclass[tikz]{standalone}
\usepackage{graphicx}
\graphicspath{{./images/}}
\pgfmathsetmacro{\distance}{0}
\newcommand\righttrees{-35, -33, -30, -29, -26, -22, -21, -19, -18, -17, -16, -15, -14, -11, -9, -7, -5, -3, -2, 1, 3, 4, 5}
\newcommand\lefttrees{-35, -32, -31, -30, -26, -22, -21, -20, -16, -15, -13, -11, -8, -7, -4, -3, -1, 1, 5, 6}
\newcommand\GreenCars{1/0, 1/1}
\newcommand\RedCars{0/1, 2/1}
\begin{document}
\begin{tikzpicture}[transform shape,rotate=-90, scale = 2]
\pgfmathsetmacro{\m}{4}
\pgfmathsetmacro{\length}{9}
\pgfmathsetmacro{\hugelength}{250}
\pgfmathsetmacro{\slotlength}{1.5}
\pgfmathsetmacro{\carscalefactor}{0.03}
\pgfmathsetmacro{\treecalefactor}{0.01}
\fill[black!20] (0, 0) rectangle (\length, \m);
\foreach \y in {0, \m}
{
\draw[line width = 0.5mm, yellow!90] (0,\y) -- (\length, \y);
}
% the on-road marks move, clip most of it
\begin{scope}[xshift=\distance cm]
\clip (-\distance, -1) rectangle (\length-\distance, \m + 1);
\foreach \y in {2, 3, ..., \m}
{
\draw[line width = 0.3mm, dash pattern=on 9pt off 27pt, white] (-\hugelength,\y - 1) -- (\length, \y - 1);
}
\end{scope}
\begin{scope}% removed offset requirements: outer code should handle trees moving
% just make sure there are no artefacts outside the frame
\clip (0, -1) rectangle (\length, \m + 1);
% tree outside the rightmost lane
\foreach \xtree in \righttrees
{
\node at (\xtree, \m + 0.5) {\includegraphics[scale=\treecalefactor]{39-fir-tree-png-image}};
}
% tree outside the leftmost lane
\foreach \xtree in \lefttrees
{
\node at (\xtree, -0.5) {\includegraphics[scale=\treecalefactor]{39-fir-tree-png-image}};
}
\end{scope}
\begin{scope}[shift={(0.9, 0.5)}]
\foreach \x/\y in \GreenCars% in { (1 * \slotlength, 0), (1 * \slotlength, 1)}
{
\node at (\x * \slotlength, \y) {\scalebox{-1}{\includegraphics[scale=\carscalefactor]{GreenCarTopView}}};
}
\foreach \x/\y in \RedCars% in { (0 * \slotlength, 1), (2 * \slotlength, 1)}
{
\node at (\x * \slotlength, \y) {\scalebox{-1}{\includegraphics[scale=\carscalefactor]{RedCarTopView}}};
}
\end{scope}
\end{tikzpicture}
\end{document}
文件 B(大部分代码已被注释掉)
\documentclass[tikz]{standalone}
%\usepackage{tikz}
\usepackage{standalone}
\usepackage{import}
\usepackage{graphicx}
%\usetikzlibrary{backgrounds}
%\usetikzlibrary{patterns}
%\usepackage{pgfplots}
%\pgfplotsset{compat=1.17}
%
%\tikzset{
% hatch distance/.store in=\hatchdistance,
% hatch distance=10pt,
% hatch thickness/.store in=\hatchthickness,
% hatch thickness=2pt
%}
%
%\makeatletter
%\pgfdeclarepatternformonly[\hatchdistance,\hatchthickness]{flexible hatch}
%{\pgfqpoint{0pt}{0pt}}
%{\pgfqpoint{\hatchdistance}{\hatchdistance}}
%{\pgfpoint{\hatchdistance-1pt}{\hatchdistance-1pt}}%
%{
% \pgfsetcolor{\tikz@pattern@color}
% \pgfsetlinewidth{\hatchthickness}
% \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
% \pgfpathlineto{\pgfqpoint{\hatchdistance}{\hatchdistance}}
% \pgfusepath{stroke}
%}
%\makeatother
\graphicspath{{./images/}}
\newcommand\righttrees{}
\newcommand\lefttrees{}
\newcommand\GreenCars{}
\newcommand\RedCars{}
\begin{document}
\centering
\begin{tikzpicture}%[show background rectangle]
\renewcommand\lefttrees{1.60,8.20,9.20,10.20,13.20}
\renewcommand\righttrees{5.60,9.20,10.20}
\renewcommand\GreenCars{3.00/0.00,5.00/0.00,1.00/2.00,2.00/2.00,4.00/3.00}
\renewcommand\RedCars{0.00/0.00,1.00/0.00,2.00/0.00,4.00/0.00,0.00/1.00,1.00/1.00,3.00/1.00,4.00/1.00,4.00/2.00,1.00/3.00,3.00/3.00,5.00/2.00}
\pgfmathsetmacro{\distance}{8.2}
%\begin{scope}%[opacity=0.5]
\import{./}{Frame.Moving.Cars}
%\input{./Frame.Moving.Cars}
%\draw[fill=green, opacity=0.3] (0,-10) rectangle (12, 25);
%\end{scope}
%\begin{scope}
% \pgfmathsetmacro{\basicunit}{1}
% \pgfmathsetmacro{\corneroffset}{0.1}
% \pgfmathsetmacro{\xslide}{2 * \basicunit - 2 * \corneroffset}
% \pgfmathsetmacro{\yslide}{3 * \basicunit - 2 * \corneroffset}
% \path[clip] (2-2*\basicunit, 2-7 * \basicunit) --
% ++ (0, -\basicunit + \corneroffset) --
% ++ (0, 0) arc (180:270:\corneroffset) --
% ++ (\xslide, 0) --
% ++ (0,0) arc (90:0:\corneroffset) --
% ++ (0, -\yslide) --
% ++ (0, 0) arc (180:270:\corneroffset) --
% ++ (\xslide, 0) --
% ++ (0, 0) arc (270:360:\corneroffset) --
% ++ (0, \yslide) --
% ++ (0,0) arc (180:90:\corneroffset) --
% ++ (\xslide, 0) --
% ++ (0, 0) arc (270:360:\corneroffset) --
% ++ (0, \yslide) --
% ++ (0,0) arc (0:90:\corneroffset) --
% ++ (-\xslide, 0) --
% ++ (0, 0) arc (270:180:\corneroffset) --
% ++ (0, \yslide) --
% ++ (0,0) arc (0:90:\corneroffset) --
% ++ (-\xslide, 0) --
% ++ (0, 0) arc (90:180:\corneroffset) --
% ++ (0, -\yslide) --
% ++ (0,0) arc (0:-90:\corneroffset) --
% ++ (-\xslide, 0) --
% ++ (0, 0) arc (90:180:\corneroffset) --
% cycle
% ;
% \import{.}{Frame.Moving.Cars}
% \draw[pattern=flexible hatch, hatch distance=10pt, hatch thickness=1pt]
% (4*\basicunit,-6*\basicunit) rectangle +(2 * \basicunit, 3 * \basicunit);
%\end{scope}
\end{tikzpicture}
\end{document}
这树 PNG我使用并保存在图片目录中(1924 x 1768)。汽车来自汽车图标(960 x 476)。
不能确定以上是否是我手头上的文件的原始链接。
所以我的问题是我应该修复什么?
然而,我真正的问题可能是如何利用所包含的内容tikzpicture
?