ファッションブランドコミュニティ「プーペガール」
1 | 2 | 3 | 4 | 5 |最初 次ページ >>
2010年02月10日(水) 12時02分58秒

360度写るんです

テーマ:カメラ
 これってイメージ・ベースド・ライティングの素材作りに最適なのでは?

360度パノラマ動画を気軽に撮って気軽にアップ ソニー「bloggie(MHS-PM5K)」
2010年02月10日(水) 02時15分31秒

iPhoneアプリ開発、その(184) 履歴だ〜

テーマ:Xcode
 今回は

$テン*シー*シー-1

 って感じで、色パレット兼用、色履歴ビューを作るっす。名付けて
ColorHistoryView

$テン*シー*シー-2

 用意する色パレットはこんな感じで
(1 + (7 x 2)) x 6 = 90色

 のパレット。

 色自体はUIColorインスタンスとして管理し、こいつをNSMutableArrayで配列として保持するわけですわ。
 インディックスと表示順の関係はこんな感じ。

$テン*シー*シー-3

 当然、画面内に入りきらないんでスクロールできるようにします。で、ずるずるスクロールすると履歴部分が出てくるようにする。

$テン*シー*シー-4

 こいつは、Canvasに絵を描くたびに使った色を履歴として保存していくようにし、最大
6 x 3 = 18色

 を保持するようにします。

 最初は空なんで、先頭にどんどんUIColorインスタンスを挿入。

$テン*シー*シー-5

 18個溜まった後は、18番目のUIColorインスタンス解放してから、先頭に挿入。

$テン*シー*シー-6

 ただ~し、履歴のUIColorインスタンスを使って描画された場合、NSMutableArray内に同一のUIColorインスタンスが存在するので、18番目じゃなく、こっちを解放。
 そうして改めて先頭に挿入。

$テン*シー*シー-7

 こうすることで、絶えず最後に使った色が先頭に表示されることになるわけっす。
 ま、いまいち、せわしないんですが…

 ColorHistoryViewの構成はこんな感じ。

$テン*シー*シー-8

 このHistoryContentsViewでのtouchesEndedイベントを拾って、おなじみdelegateでcolorViewControllerインスタンスにこのUIColorインスタンスが選ばれたよって通知するわけですわ。
@protocol ColorHistoryViewDelegate
-(void)penColor:(UIColor*)color;
@end

 で、受け取ったcolorViewController側はこいつをpenDelegateに対してsetPenColor:で通知してやるわけですな。delegate数珠つなぎというやつです。
 あとは、自分が持ってるpenSizeview、penColorSaturationview、penColorBrightnessviewをこの新しいUIColorで更新してやればいいんですが、ここでひとつ問題。
 penSizeviewにはUIColorインスタンスをそのまま渡せるけど、penColorSaturationview、penColorBrightnessviewはhue、saturation, brightness変数を計算して渡す必要があるんですな。
 UIColorはたとえ色相、彩度、明度で設定しても、取り出せるのはRGBなので、RGBから色相、彩度、明度に変換する関数が必要になるわけです。
 Cocoaのフレームワーク探したんだけど、今のところ未確認。
 しょうがないので本を参考に自前で用意しますた。
static void RGBtoHSB(UIColor* inColor,double *H,double *S,double *B)

 ウェブだと翔泳社のサイトが参考になると思われ。
 ありがとう翔泳社。
RGB←→HSB相互変換【Windowsプログラミング研究所】

$テン*シー*シー-9
ワシにはこれがあるがな~

 HistoryContentsViewの開閉に関しては、もう書かない。その(182)でやってるのと同じです。
 ボタンクリックの対応もUIButtonをプログラム上で作り利用するを読んでください。

 で、あとは履歴の取り方。
 こいつはCanvasViewから、ペンで画像を描いたら毎回、使った色を通知するようにします。
@protocol CanvasViewDelegate
-(void)penDrawed:(UIColor*)penColor;
@end

 こいつをcolorViewControllerが受け取って、ColorHistoryViewの
-(void)penDrawed:(UIColor*)penColor;

 を呼び出して更新。内部ではHistoryContentsViewの同じメソッドを呼び出してます。
 ここらへん、HistoryContentsViewを公開して直でつなぐ事もできるんですが、ColorHistoryViewで隠蔽しちゃいます。
 こういう風にしておくと、HistoryContentsViewのデザインを変えても、他のクラスに変更を要求せずに済むってメリットがあるわけですな。

------------
サンプルプロジェクト:paint01.zip
2010年02月09日(火) 23時10分48秒

スイム1.2km

テーマ:ランニング
 クロール50m x 4、(クロール右手のみ50m、クロール左手のみ50m) x 2、スカーリング50m x 2、バタ足50m x 2、クロール50m x 8、バタ足50m x 2、ブレス 50m x 2。

現在
 体重:63.1kg 体脂肪:20.8%

目標
 体重:59.5kg 体脂肪:15.1%
1 | 2 | 3 | 4 | 5 |最初 次ページ >>
powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト