2011年2月6日日曜日

Cocoa ObjC 透明ウィンドウで遊ぶ

本日よりMacRubyではなくObjCでcocoaの勉強を始めた。

とりあえず、MacRubyでやったことの復習。透明ウィンドウを作って、そこに半透明なViewをはりつけて表示する。



やっぱXcodeはObjC用のIDEなんで、ObjCで使うと便利であると知る。(^^;)当たり前か。
View上でmouseDownがあると、カーソル位置に「MouseDown」と描画させてみる。

ほとんどがxcatsan師匠からの受け売りですな。本当に師匠の
(旧)Cocoaの日々

は日本語によるCocoaプログラミングの最高のサイトではないかしらん。いつもお世話になりっぱなしで、「これはどうやって実現するんだろう」とふつーにググったら、だいたい師匠の旧cocoに行き当たってそこで大正解にたどり着くことがおおい。

本日の一番の収穫は

setMovableByWindowBackground:

を知ったこと。ウィンドウのどこでドラッグしてもウィンドの移動をできる、というやつ。
また、WindowのstyleMaskを後付でいろいろ替えられるみたいなので、右クリックでNSResizableWindowMaskとNSBorderlessWindowMaskを切り替えられるように実験。

- (void)rightMouseDown:(NSEvent *)theEvent{
 NSWindow* window=[self window];
 if([window styleMask]==NSBorderlessWindowMask){
  [window setStyleMask:NSResizableWindowMask];
  [window setOpaque:YES];
 }
 else {
  [window setStyleMask:NSBorderlessWindowMask];
  [window setOpaque:NO];
  [window setBackgroundColor:[NSColor clearColor]];
  
 }
 [self setNeedsDisplay:YES];

}

で、右クリックするとちゃんとサイズ変更のアンカーが現れますな。


どーもよくわかんないのが[window setOpaque:YES];の挙動。これを一度でもYESにしちゃうとViewが真っ黒になってしまう。うーん、YESにしなかればいいわけだけど、サイズ変更アンカーがすごく見えづらいんだよなあ。

一度真っ黒で塗りつぶされてしまったものの上からいくら半透明なViewを描き直してもだめ、ということか。

0 件のコメント:

コメントを投稿