iPhoneアプリ内で虫眼鏡機能を実装したいと思っております。
拡大元の画像の一部分を円形に拡大して表示(虫眼鏡のイメージ)したいと
考えております。
(拡大元画像の任意の点(x,y)から任意の半径rの円形範囲部分を(面積比2倍等)拡大して拡大元画像の上に重ねて表示)
虫眼鏡の拡大部分は 円形 で矩形領域ではありません。。
(円形での方法が分かりません。。)
cocos2dを利用しているためcocos2dで上記の虫眼鏡機能が実装できると
助かるのですが・・UIKitでもかまいません。
参考になりそうなサイト等でもOKです。
ご教授お願い致します。
No.1ベストアンサー
- 回答日時:
Cocos2dのことはわかりません。
Core Graphicsの話をします。円形の窓から、画像を覗くというプログラムを作りました。添付動画をご覧ください。
コードはこれです。
ViewController.m
#import "ViewController.h"
#import "MyView.h"
@implementation ViewController {
IBOutlet MyView *myView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget: self
action: @selector(panGestureRecognizer:)];
[myView addGestureRecognizer: recognizer];
[recognizer release];
}
// Gesture Recognizer Method
- (void)panGestureRecognizer: (UIPanGestureRecognizer *)recognizer
{
if ([recognizer state] == UIGestureRecognizerStateBegan) {
[recognizer setTranslation: myView.center inView: self.view];
} else if ([recognizer state] == UIGestureRecognizerStateChanged) {
myView.center = [recognizer translationInView: self.view];
[myView setNeedsDisplay];
} else if ([recognizer state] == UIGestureRecognizerStateEnded) {
myView.center = [recognizer translationInView: self.view];
[myView setNeedsDisplay];
}
}
@end
#import "MyView.h"
@implementation MyView
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextAddEllipseInRect(context, rect);
CGContextClip(context);
CGImageRef image = [[UIImage imageNamed: @"sample.png"] CGImage];
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0.0, -(CGFloat)CGImageGetHeight(image));
CGContextDrawImage(context, CGRectMake(-(self.center.x - self.frame.size.width / 2.0),
(self.center.y - self.frame.size.height / 2.0),
(CGFloat)CGImageGetWidth(image), (CGFloat)CGImageGetHeight(image)), image);
}
@end
このプログラムをあれこれいじれば、お望みの虫眼鏡になっていくのではないかと思います。
お返事いただきありがとうございます。
円形領域内に拡大元画像を2倍にしたテクスチャを貼っているのか
灰色の矩形領域の一部円形領域だけ透過されているテクスチャをサンプル画像の上に
表示しているのかを不勉強ながらまだ判断できておりません。。
このプログラムを実行・改変・確認させていただきました上で
虫眼鏡のようにできそうか否かでベストアンサーか否かをつけさせていただきますね。
こちらの説明不足ですみません・・。
プログラムや分かりやすい動画までつけていただきありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 拡大鏡の音声読み上げ機能が機能しません 2 2023/02/23 22:34
- メガネ・コンタクト・視力矯正 今度パソコンの仕事になりました。59歳で老眼ですが、老眼鏡と遠近もありますが老眼鏡は、パソコンには不 1 2023/02/27 06:29
- デジタルカメラ 録画した4K動画を、フルピクセルで再生したい 5 2023/05/10 00:05
- メガネ・コンタクト・視力矯正 眼鏡をしていると手元が見えにくい。 2 2022/06/26 09:38
- 眼・耳鼻咽喉の病気 老眼の対策 5 2022/09/16 17:33
- その他(メイク・美容) 鼻の形 名称、綺麗にする方法 1 2023/08/12 08:38
- メガネ・コンタクト・視力矯正 眼鏡の悩みについて 1 2022/08/08 21:24
- 一眼レフカメラ カメラ選び 6 2022/09/02 12:54
- Photoshop(フォトショップ) Photoshopで、デジタル一眼レフカメラ撮影の写真を、スマホ写真のように「のっぺり」させるには? 2 2023/03/28 14:43
- メガネ・コンタクト・視力矯正 JINSの眼鏡 鼻パッド痕が残ります。 4 2022/08/14 00:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
透過PNGが透過されない!!
-
C# Excelファイルへの画像挿入。
-
手作業で埋め込んだ、UserForm1...
-
ビットマップ画像を読み込むプ...
-
クリックされた画像URLの照合
-
Illustratorで文字と画像を流し...
-
PHPでPDFを画像で表示したい
-
PHPで吐き出した画像にリンクを...
-
拡張子php画像をjpg画像等に変...
-
VBSの「MsgBox」について
-
画像ファイル pngのメリットを...
-
PHP MySQLに画像を直接保存
-
Pythonで画像の読み込みが上手...
-
Webbrowser上に表示した画像を...
-
ListViewコントロールでサムネ...
-
libpng 24bpp rawをPNGに変換す...
-
php,mysqlにて画像パス保存/表...
-
VBAでJPGサイズ変更
-
pictureboxに表示した画像のフ...
-
画像リストを作りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
Illustratorで文字と画像を流し...
-
アップロード画像数でCSSを分け...
-
imageフォルダに、画像をリサイ...
-
PythonのTkinter詳しい方へ。画...
-
VBAでJPGサイズ変更
-
C# Excelファイルへの画像挿入。
-
ListViewコントロールでサムネ...
-
PHPで吐き出した画像にリンクを...
-
php,mysqlにて画像パス保存/表...
-
PHP+PostgreSQLを使ってPDFファ...
-
スマートフォンから画像のアッ...
-
画像にテキストを埋め込むジェ...
-
実行ファイル(exe)に画像ファ...
-
ビットマップ画像を読み込むプ...
-
改行コードのカウント
-
Ajaxで画像表示
-
画像アップロードのファイル名...
おすすめ情報