在投影机中使图片背景透明

在投影机中使图片背景透明

我使用 PowerPoint 制作了一张 PNG 图片,并将该图片包含在幻灯片中。但是,图片的背景既不是白色也不是透明的。我该怎么办?您可以在下面看到幻灯片:

在此处输入图片描述

下面的代码片段:

\begin{figure}
  \centering \includegraphics[scale=0.5]{fig/lowering_flow.png}
\end{figure}

答案1

我同意 Dave 的建议直接用 TikZ 绘制图片:在网站上你会发现很多起点(可以定义一个可定制颜色的样式模块,然后使用矩阵来定位节点,或者只是通过库放置它们positioning- 也许有人会发布另一个答案)。

我更喜欢另一种方法,因为这也是以面向对象的方式轻松实现的。问题,或者说这种方法的美妙之处(我更倾向于这种方式),在于一个人应该自己实现一切。

代码已加注释,因此可以理解背后的原因。

\documentclass{beamer}
\usepackage{lmodern}

\usepackage{tikz}
\usepgfmodule{oo}
\usetikzlibrary{positioning}

\pgfooclass{module}{

 % class attributes
 \attribute text;
 \attribute text width=2.5cm;
 \attribute border color=orange;
 \attribute top color=none;
 \attribute bottom color=none;
 \attribute text color=black;
 \attribute label;
 \attribute width=3cm;
 \attribute height=1cm;

 % constructor method
 \method module() {
 }

 \method text(#1) {
  \pgfooset{text}{#1}
 }

 \method set text width(#1) {
  \pgfooset{text width}{#1}
 }

 \method set border color(#1) {
  \pgfooset{border color}{#1}
 }

 \method set top color(#1) {
  \pgfooset{top color}{#1}
 }

 \method set bottom color(#1) {
  \pgfooset{bottom color}{#1}
 }

 \method set text color(#1) {
  \pgfooset{text color}{#1}
 }

 \method set label(#1) {
  \pgfooset{label}{#1}
 }

 \method set width(#1) {
  \pgfooset{width}{#1}
 }

 \method set height(#1) {
  \pgfooset{height}{#1}
 }

 \method draw(#1,#2) {
  \node [rectangle,
    rounded corners,
    draw=\pgfoovalueof{border color},
    top color=\pgfoovalueof{top color},
    bottom color=\pgfoovalueof{bottom color},
    text=\pgfoovalueof{text color},
    align=center,
    text width=\pgfoovalueof{text width},
    minimum width=\pgfoovalueof{width},
    minimum height=\pgfoovalueof{height},
    ] (\pgfoovalueof{label}) at (#1,#2) {\pgfoovalueof{text}};
 }

 \method place(#1) {
  \node [rectangle,
    rounded corners,
    draw=\pgfoovalueof{border color},
    top color=\pgfoovalueof{top color},
    bottom color=\pgfoovalueof{bottom color},
    text=\pgfoovalueof{text color},
    align=center,
    text width=\pgfoovalueof{text width},
    minimum width=\pgfoovalueof{width},
    minimum height=\pgfoovalueof{height},
    #1
    ] (\pgfoovalueof{label}) {\pgfoovalueof{text}};
 }

 % shortcut method to easily set labels, text and draw
 % use the \pgfoothis to refer to the current object
 \method set and draw(#1,#2,#3,#4) {
  \pgfoothis.set label(#1)
  \pgfoothis.text(#2)
  \pgfoothis.draw(#3,#4)
 }

 % shortcut method to easily set labels, text and place
 % objects
 \method set and place(#1,#2,#3) {
  \pgfoothis.set label(#1)
  \pgfoothis.text(#2)
  \pgfoothis.place(#3)
 }

 % shortcut method to easily set the style
 \method set style(#1,#2,#3) {
  \pgfoothis.set border color(#1)
  \pgfoothis.set top color(#2)
  \pgfoothis.set bottom color(#3)
 }

 % shortcut method to easily set the dimensions
 \method set dimensions(#1,#2,#3) {
  \pgfoothis.set width(#1)
  \pgfoothis.set height(#2)
  \pgfoothis.set text width(#3)
 }

}

\begin{document}
\begin{frame}{Lowering Flow Overview}
\begin{tikzpicture}[node distance=1.5cm,scale=0.75, transform shape]
% declaring the new object with the constructor method
\pgfoonew \mod=new module()

% method set style: 
% #1= border color
% #2= top color
% #3= bottom color
\mod.set style(blue,blue!40,blue!5)

% method set and draw: 
% #1= label of the node
% #2= text
% #3,#4= coordinates
\mod.set and draw(mod1,LLVM IR,0,0)

\mod.set style(blue!50!cyan,blue!50!cyan!40,blue!50!cyan!5)

% method set dimensions: 
% #1= module width
% #2= module height
% #3= text width
\mod.set dimensions(5cm,1cm,4.9cm)

% method set and place: 
% #1= label of the node
% #2= text
% #3= position with respect to another node identified with a label
\mod.set and place(mod2,{\mbox{DAG of Target Operation} (might be illegal)} ,below of=mod1)
\mod.set and place(mod3,{\mbox{DAG of Target Operation} (legal)} ,below of=mod2)

\mod.set style(green!30!lime,green!30!lime!40,green!30!lime!5)
\mod.set and place(mod4,{\mbox{DAG of Machine}\\ Instructions} ,below of=mod3)

\mod.set style(orange,orange!40,orange!5)
\mod.set and place(mod5,{Sequence \mbox{of Machine} Instructions} ,below of=mod4)

\mod.set dimensions(3.25cm,1cm,3cm)
\mod.set style(violet!80!purple,violet!80!purple!40,violet!80!purple!5)
\mod.set and place(mod6,{Object File} ,right=3cm of mod1)

\mod.set and place(mod7,{Assembly File} ,below right=0.75cm of mod6)

\mod.set dimensions(5cm,1cm,4.9cm)
\mod.set style(red,red!40,red!5)
\mod.set and place(mod8,{\mbox{Machine Code Layer}\\ (MCInst)} ,below =2cm of mod6)

\mod.set style(orange,orange!40,orange!5)
\mod.set and place(mod9,{Sequence \mbox{of Machine} Instructions} ,below of=mod8)

% since here we repeat the same text we just need to place the object
\mod.place(below of=mod9)
\end{tikzpicture}
\end{frame}
\end{document}

结果:

在此处输入图片描述

相关内容