;------------------------------------------------------------------
PRO Transparent_Polygon

   ; Create some data.
   signal = LoadData(1)
   time = Findgen(N_Elements(signal)) * 6.0 / N_Elements(signal)

   ; Create some windows.
   Window, Title='Data Window', XSIZE=400, YSIZE=400, /FREE
   dataWin = !D.Window
   Window, XSIZE=400, YSIZE=400, /FREE, /PIXMAP
   pixmapWin = !D.Window

   ; Draw plot in data window.
   WSet, dataWin
   Plot, time, signal, BACKGROUND=FSC_Color('ivory'), $
      COLOR=FSC_Color('navy'), $
      /NODATA, XTitle='Time', YTitle='Signal Strength'
   OPLOT, time, signal, THICK=2, COLOR=FSC_Color('cornflower blue')
   OPLOT, time, signal, PSYM=2, COLOR=FSC_Color('olive')

   ; Take a snapshot.
   win1 = TVREAD(TRUE=3)

   ; Copy data window and draw a polygon in the pixmap window.
   WSet, pixmapWin
   DEVICE, COPY=[0,0,400, 400, 0, 0, dataWin]
   POLYFILL, [0.3, 0.65, 0.5, 0.25, 0.30], $
             [0.27, 0.32, 0.75, 0.62, 0.27], /NORMAL, $
             COLOR=FSC_COLOR('deep pink')

   ; Take a snapshot of this window, then delete it.
   win2 = TVREAD(TRUE=3)
   WDelete, pixmapWin

   ; Use a half-transparent alpha.
   alpha = 0.5
   Window, Title='Transparent Window', XSIZE=400, YSIZE=400, /FREE
   TV, (win2 * alpha) + (1 - alpha) * win1, TRUE=3

END
;------------------------------------------------------------------