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ランキング
-
VBSの「MsgBox」について
-
PHPで吐き出した画像にリンクを...
-
透過PNGが透過されない!!
-
画像ファイルサイズの上限について
-
【JAVA】画像のサイズを大きく...
-
VBAでJPGサイズ変更
-
MYSQLでPHPから画像表...
-
PHPで画像サイズの変更
-
ウィンドウサイズを取得して、p...
-
GDI+を使ったビット数とDPIの扱い
-
画像をひとつにするには・・・?
-
libpng 24bpp rawをPNGに変換す...
-
サムネイルを2つ生成する方法
-
ファイルアップ時のファイル名
-
【PHP】サーバー上で TIFFをJPE...
-
携帯サイトでの画像切り替え
-
IPアドレス別に表示する画像を...
-
ビットマップ画像を読み込むプ...
-
再投稿です。初MacでPythonの勉...
-
iphoneで虫眼鏡の作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
VBAでJPGサイズ変更
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
SQLiteに画像を格納したい
-
アップロード画像数でCSSを分け...
-
PythonのTkinter詳しい方へ。画...
-
ビットマップ画像を読み込むプ...
-
Illustratorで文字と画像を流し...
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
pictureboxに表示した画像のフ...
-
OpenGLで描いて画像ファイル出力
-
ListViewコントロールでサムネ...
-
BLOBデーターの画像の表示方法...
-
「imagejpeg」(GD)で作成した...
-
【PHP】画像が表示されず「×」...
-
PHP MySQLに画像を直接保存
-
GDを使って画像の背景を透過さ...
-
★PHP★画像アップロードの際に余...
おすすめ情報