<div dir="ltr">Thanks.<div>This saved lots of time.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 20, 2014 at 10:39 AM, Matthew Flatt <span dir="ltr"><<a href="mailto:mflatt@cs.utah.edu" target="_blank">mflatt@cs.utah.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The `frame%` class does not offer a transparency option, but on Mac OS<br>
X, you can use the FFI to make a frame transparent at the Cocoa<br>
NSWindow layer.<br>
<br>
Here's an example:<br>
<br>
--------------------------------------------------<br>
<br>
#lang racket/gui<br>
(require ffi/unsafe<br>
         ffi/unsafe/objc)<br>
<br>
;; Create the frame:<br>
(define f (new frame%<br>
               [label "Example"]<br>
               [width 200]<br>
               [height 200]))<br>
<br>
;; Add a transparent canvas that displays "Hello"<br>
(new canvas%<br>
     [parent f]<br>
     [style '(transparent)]<br>
     [paint-callback (lambda (c dc)<br>
                       (send dc draw-text "Hello" 0 0))])<br>
<br>
;; The `CGFloat` type depends on the platform:<br>
(define 64-bit? (= (ctype-sizeof _long) 8))<br>
(define _CGFloat (if 64-bit? _double _float))<br>
<br>
;; Get an `NSWindow` from the `frame%` object:<br>
(define h (send f get-handle))<br>
<br>
;; Set the background's transparency at the `NSWindow` level:<br>
(import-class NSColor)<br>
(tellv h setBackgroundColor: (tell NSColor<br>
                                   colorWithRed: #:type _CGFloat 1.0<br>
                                   green: #:type _CGFloat 1.0<br>
                                   blue: #:type _CGFloat 1.0<br>
                                   alpha: #:type _CGFloat 0.5))<br>
(tellv h setOpaque: #:type _BOOL NO)<br>
<br>
;; Show the frame:<br>
(send f show #t)<br>
<br>
</blockquote></div><br></div>