One possibility using TikZ:
\documentclass{book}
\usepackage{tikz}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par
\noindent
\begin{tikzpicture}[remember picture,overlay]%
\fill [red!20!black]
([xshift=-10pt]current page.south east)
rectangle
(current page.north east);
\fill [red!20!black]
(current page.north east)
rectangle
([yshift=-10pt]current page.north west);
\fill [red!20!black]
(current page.south east)
rectangle
([yshift=20pt]current page.south west);
\fill [red!20!black]
(current page.south west)
rectangle
([xshift=20pt]current page.north west);
\end{tikzpicture}}%
\@endpart}
\makeatother
\begin{document}
\part{Test Part}
\end{document}

A variation using a shading:
\documentclass{book}
\usepackage{tikz}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par
\noindent
\begin{tikzpicture}[remember picture,overlay]%
\shade [shading=ball,ball color=cyan!80!black]
(current page.south west) -- ([xshift=20pt]current page.south west) -- ([xshift=20pt,yshift=-10pt]current page.north west) -- ([xshift=-10pt,yshift=-10pt]current page.north east) --
([xshift=-10pt,yshift=20pt]current page.south east) --
([xshift=-10pt,yshift=20pt]current page.south west) --
([xshift=-10pt]current page.south west) --
(current page.south east) --
(current page.north east) --
(current page.north west) -- cycle
;
\end{tikzpicture}}%
\@endpart}
\makeatother
\begin{document}
\part{Test Part}
\end{document}

After a comment, it's clear that the frame should go around the text area; in this case, using the tikzpagenodes package, one can make a simple modification to the solutions above and get the desires result by using the current page text area family of nodes:
\documentclass{book}
\usepackage[margin=1in]{geometry}
\usepackage{tikzpagenodes}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par
\noindent
\begin{tikzpicture}[remember picture,overlay]%
\shade [shading=ball,ball color=cyan!80!black]
(current page text area.south west) --
([xshift=20pt]current page text area.south west) --
([xshift=20pt,yshift=-10pt]current page text area.north west) --
([xshift=-10pt,yshift=-10pt]current page text area.north east) --
([xshift=-10pt,yshift=20pt]current page text area.south east) --
([xshift=10pt,yshift=20pt]current page text area.south west) --
([xshift=10pt]current page text area.south west) --
(current page text area.south east) --
(current page text area.north east) --
(current page text area.north west) -- cycle
;
\end{tikzpicture}}%
\@endpart}
\makeatother
\begin{document}
\part{Test Part}
\end{document}

A second frame has been requested in a comment; here's one possibility for this second frame:
\documentclass{book}
\usepackage[margin=1in]{geometry}
\usepackage{tikzpagenodes}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\p@
\fi
\Huge \bfseries #2\par
\noindent
\begin{tikzpicture}[remember picture,overlay]%
\shade [shading=ball,ball color=cyan!80!black]
(current page text area.south west) --
([xshift=20pt]current page text area.south west) --
([xshift=20pt,yshift=-10pt]current page text area.north west) --
([xshift=-10pt,yshift=-10pt]current page text area.north east) --
([xshift=-10pt,yshift=20pt]current page text area.south east) --
([xshift=10pt,yshift=20pt]current page text area.south west) --
([xshift=10pt]current page text area.south west) --
(current page text area.south east) --
(current page text area.north east) --
(current page text area.north west) -- cycle
;
\shade [shading=ball,ball color=cyan!80!black]
([xshift=24pt,yshift=24pt]current page text area.south west) --
([xshift=40pt,yshift=24pt]current page text area.south west) --
([xshift=40pt,yshift=-22pt]current page text area.north west) --
([xshift=-22pt,yshift=-22pt]current page text area.north east) --
([xshift=-22pt,yshift=40pt]current page text area.south east) --
([xshift=30pt,yshift=40pt]current page text area.south west) --
([xshift=24pt,yshift=24pt]current page text area.south west) --
([xshift=-14pt,yshift=24pt]current page text area.south east) --
([xshift=-14pt,yshift=-14pt]current page text area.north east) --
([xshift=24pt,yshift=-14pt]current page text area.north west) -- cycle
;
\end{tikzpicture}}%
\@endpart}
\makeatother
\begin{document}
\part{Test Part}
\end{document}
