?Pythonでコードを書いていて思うこと。Clientおもったこと。Guideちょっと脱線。GuideQuartzって左下隅が原点とのこと。混乱を避けるための救済措置はあるが。API徒然草(2004/01/16)和訳っぽいものを発見。Viewベースのコントロールが旧コントロールと大きく違う点は、それがウィンドウと関連付けず単独で定義できることです。この場合に表示はなされていませんが、カット&ペースト処理などで、単独オブジェクトとして別ウィンドウに移動させるような処理が簡単にできます。WIndowではEventWindowUpdateやkEventWIndowDrawがこないらしい。今回用があるのは次の箇所。Modelの和訳に相当するようです。反が違うので内容が違う部分もありますが、大筋では同じです。ウィンドウ上にHIViewベースでのコントロールを描画する場合には、そのウィンドウがコンポジット(合成)モードである必要があります。Managerベースの描画が採用されます。コンポジットウィンドウでのViewの描画順序は、同じ階層での順序情報により決まり、描画時のα値(透明度)も正しく認識されます。その結果として、描画におけるコントロールの重なり具合も美しく再現されます。Eventを受け取った時に実行するようにします。EventのEventWindowUpdateやkEventWindowDrawを受け取ったことを認知しての再描画は行えませんので注意してください。コンポジットウィンドウでは、そうしたイベントは発生しないからです。Viewの再描画を行いたい場合には、目的に応じたAPIを用いて「再描画領域」を記録させます。HIViewSetNeedsDisplay()やHIViewSetNeedsDisplayInRegion()などです。10.4以降ではHIViewSetNeedsDisplayInRect()やHIViewSetNeedsDisplayInShape()なども利用することができます。この時の再描画は、RunApplicationEventLoop()やWaitNextEvent()で実行されているイベントループの処理タイミングに依存します。10.3以降で利用できるHIViewRender()を用います。投稿Atom投稿コメントAtomコメント。