我想使用图像/图标集合作为节点来构建一个图形。
我希望能够使用matrix
、相对定位并在它们之间画箭头。
我有点困惑,为什么我当前的解决方案(见下文)将图像显示在节点框的左下角而不是中心。
我发现这img./style={align=center}
解决了水平居中的问题。
关于如何垂直对齐它们,还有什么想法吗?
使用pgfdeclareimage
和pgfbox
不是必需的,但只是我尝试使其工作的一部分。
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
\begin{document}
% a bunch of images at 64pxx64px
\pgfdeclareimage{observer}{figures/engineer.png}
\pgfdeclareimage{home}{figures/home.png}
\pgfdeclareimage{user}{figures/user.png}
\pgfdeclareimage{framework}{figures/user.png}
\tikzset{
% style for inserting images as nodes
img/.style={
text width=2cm,
text height=2cm,
rectangle,
align=center,
draw} % only for debugging..
}
\begin{tikzpicture}
\matrix[nodes=img, column sep=0.2cm]{
\node[] (user) {\pgfbox[center,center]{\pgfuseimage{user}}}; &
\node[ right=of user] (home) {\pgfbox[center,center]{\pgfuseimage{home}}}; &
\node[ right=of home] (obse) {\pgfbox[center,center]{\pgfuseimage{observer}}}; \\
};
\end{tikzpicture}
\end{document}
结果:
答案1
这是 Zarko 提出的一种可能性。
\documentclass[tikz,border=4mm]{standalone}
\usetikzlibrary{matrix}
\newcommand{\ing}[1]{\includegraphics[width=2cm]{#1}}
\tikzset{
% style for inserting images as nodes
img/.style={
text width=2cm,
%text height=2cm, %% don't use this
inner sep=0pt, %% use this
outer sep=0pt, %% and this
rectangle,
align=center,
draw,thick} % only for debugging..
}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of nodes,nodes=img, column sep=0.2cm]{
\ing{example-image-a} &
\ing{example-image-b} &
\ing{example-image-c} \\
};
\end{tikzpicture}
\end{document}
笔记:
- 请勿使用,
text height
因为它会破坏节目。 - 按照您的意愿使用和
width
中的值。\ing
text width
inner
并且outer sep
零值会给出更好的外观。