可缩放的“双边框”矩形

可缩放的“双边框”矩形

如何绘制一个具有“双边框”的矩形,该矩形可以为其 8 个边框(4 个内边框、4 个外边框)分别指定一种颜色,并且在缩放时不会加宽外部和内部矩形之间的分隔空间resizebox

(抱歉,我对 TikZ 还很陌生。)

我尝试了以下方法,它的缺点是:它的 3 个“矩形”(内边框等于外边框)并且它的边缘看起来“不连接”:

\begin{tikzpicture}
  \draw[red, double = black] (0,0) -- (1,0);
  \draw[green, double = purple] (1,0) -- (1,1);
  \draw[blue, double = brown] (1,1) -- (0,1);
  \draw[yellow, double = white] (0,1) -- (0,0);
\end{tikzpicture}

这是一张说明问题的图片

答案1

或许如此?

在此处输入图片描述

\documentclass{article}
\usepackage{tikz,lipsum}
\usetikzlibrary{calc}

\usepackage[marginparsep=3pt, top=2cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}

\makeatletter
\newcommand{\Square}[2]{%
    \def\@W{#1}%
    \begin{tikzpicture}[baseline=(current bounding box.base)]
    \foreach \o/\i [count=\j from 0] in {
        blue/red,
        yellow/black,
        orange/gray,
        green/violet}{%
    \fill[rotate=\j*90,\o]
        (-#2,-#2)--(#2,-#2)--(#2-\@W,\@W-#2)--(\@W-#2,\@W-#2)--cycle ;
    \fill[rotate=\j*90,\i]
        (-#2+\@W,-#2+\@W)--(#2-\@W,-#2+\@W)--(#2-2*\@W,2*\@W-#2)--(2*\@W-#2,2*\@W-#2)--cycle ;
        }
    \end{tikzpicture}
}
\makeatother


\newlength{\MyHeight}
\newsavebox{\MyBox}

\newcommand{\DBbox}[3][.05]{%
    \begin{lrbox}{\MyBox}
    \fbox{%
        \begin{minipage}{#2}
        #3
        \end{minipage}  
    }%
    \end{lrbox}%
    \settoheight{\MyHeight}{\usebox{\MyBox}}%
    \addtolength{\MyHeight}{-.2\baselineskip}% <- WHY ???
    \usebox{\MyBox}%
    \raisebox{.2\baselineskip}{\Square{#1}{\MyHeight}}% <- WHY ???
    }

\begin{document}

\DBbox[5pt]{9cm}{%
    \lipsum[1]}

\bigskip 

\DBbox[20pt]{7cm}{%
    \lipsum[1]}

\end{document}

更多东西 :

在此处输入图片描述

\documentclass[margin=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\makeatletter
\newcommand{\Square}[5][%
        blue/red,
        yellow/black,
        orange/gray,
        green/violet%
        ]{%
        \pgfpointdiff{\pgfpointanchor{#3}{center}}
                 {\pgfpointanchor{#4}{center}}
        \pgf@xa=\pgf@x
        \pgf@ya=\pgf@y
        \pgfmathparse{veclen(\pgf@xa,\pgf@ya)/2.82843}
        \let\@L\pgfmathresult
    \def\@W{#2}% epaisseur
    %\def\@L{#3}% côté
    \begin{scope}[shift={($(#3)!.5!(#4)$)}]
    \node {#5} ;
    \foreach \o/\i [count=\j from 0] in {#1}{%
    \fill[rotate=\j*90,\o]
        (-\@L pt,-\@L pt)--(\@L pt,-\@L pt)--(\@L-\@W,\@W-\@L)--(\@W-\@L,\@W-\@L)--cycle ;
    \fill[rotate=\j*90,\i]
        (-\@L+\@W,-\@L+\@W)--(\@L-\@W,-\@L+\@W)--(\@L-2*\@W,2*\@W-\@L)--(2*\@W-\@L,2*\@W-\@L)--cycle ;
        }       
    \end{scope}
}
\makeatother


\begin{document}
\begin{tikzpicture}

\coordinate (A) at (0,0) ;
\coordinate (B) at (5,5) ;
\coordinate (C) at (3,-3) ;

    \Square{8pt}{A}{B}{Text 2} ;
    \Square[
        red/orange,
        yellow!30!green/gray,
        blue!25/black,
        violet/green%   
    ]{5pt}{A}{C}{Text 1} ;
\end{tikzpicture}
\end{document}

相关内容