2013年4月26日金曜日

【メモ】UIImageView(canvas)のタッチした場所にUIImageを貼り付ける方法(Objective-C)

iPhoneやiPadアプリの
お絵かきアプリであるような
キャンバス上にタッチしたら画像が重なるアレを考えてみました。

元となる画像(UIImage)に追加する画像(UIImage)を次々と貼りつけて
UIImageViewに表示させるイメージです。

// 画面に指をタッチされた時
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    
    // タッチ開始座標をインスタンス変数touchPointに保持
    UITouch *touch = [touches anyObject];
    touchPoint = [touch locationInView:canvas];
    
    UIImage* addImage = [UIImage imageNamed:@"draw_square.png"];

    // 描画領域をcanvasの大きさで生成
    UIGraphicsBeginImageContext(canvas.frame.size);
    // canvasにセットされている画像(UIImage)を描画
    [canvas.image drawInRect:CGRectMake(0, 0, canvas.frame.size.width,canvas.frame.size.height)];
    // 追加するイメージをタッチした座標位置に配置(ここは画像サイズを計算した方がよさげ)
    [addImage drawAtPoint:CGPointMake(touchPoint.x, touchPoint.y)];
    // 描画領域を画像(UIImage)としてcanvasにセット

    canvas.image = UIGraphicsGetImageFromCurrentImageContext();
    // 描画領域のクリア
    UIGraphicsEndImageContext();
}


上の実装でとりあえずは動いたけど、
正しいかどうかはこれからテストしようかと。。。

0 件のコメント:

コメントを投稿