在 TikZ 矩阵节点中居中图像

在 TikZ 矩阵节点中居中图像

我想使用图像/图标集合作为节点来构建一个图形。

我希望能够使用matrix、相对定位并在它们之间画箭头。

我有点困惑,为什么我当前的解决方案(见下文)将图像显示在节点框的左下角而不是中心。

我发现这img./style={align=center}解决了水平居中的问题。

关于如何垂直对齐它们,还有什么想法吗?

使用pgfdeclareimagepgfbox不是必需的,但只是我尝试使其工作的一部分。

代码:

\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}

在此处输入图片描述

笔记:

  1. 请勿使用,text height因为它会破坏节目。
  2. 按照您的意愿使用和width中的值。\ingtext width
  3. inner并且outer sep零值会给出更好的外观。

相关内容