Hatena::Groupiphone-dev

神様なんて信じないんだからね! このページをアンテナに追加 RSSフィード

 | 

2008-09-02

QuartzでのCGContextDrawImage

| 08:31 | QuartzでのCGContextDrawImage - 神様なんて信じないんだからね! を含むブックマーク はてなブックマーク - QuartzでのCGContextDrawImage - 神様なんて信じないんだからね! QuartzでのCGContextDrawImage - 神様なんて信じないんだからね! のブックマークコメント

普通に

CGContextDrawImage

をしようとすると、

Quartzの仕様により、

原点がディスプレイの左下になり、

そこからImageが表示されるため、上下逆さにレンダリングされる。

で勢い余って

CGContextScaleCTM(context, 1, -1);

を呼ぶと反転は直るが、y軸が−方向に逆転してしまう。

そこでCGContextTranslateCTMを使うとy座標が移動(ではないがtranslate)する。

本来、-heightに描かないといけなかったものが

translateの作用によって、height分移動するので、0に描くことができる。

		CGFloat width = CGImageGetWidth(background);
		CGFloat height = CGImageGetHeight(background);
		CGContextSaveGState(context);
	        CGContextTranslateCTM(context, 0, height);
		CGContextScaleCTM(context, 1, -1);
		CGRect rect;
		rect.origin = CGPointMake(0,0);
		rect.size = CGSizeMake(width, height);
		CGContextDrawImage(context, rect, background);
		CGContextRestoreGState(context);

しかし、別に原点が左上になったわけではないので、

yに正の値を与えると、ディスプレイの上に対して移動する。

yに負の値を与えると、ディスプレイの下に対して移動する。

座標系を綺麗にしたいんだが、どうすりゃいいかねえ。

jorakurajorakura2008/09/03 19:58QuartzでのCGContextDrawImage問題ですが、UIImageのdraw系のメソッドを直接使えば、座標系の計算をしなくても済むのです。

こちらもiPhoneの開発をしています。今後とも宜しくお願い致します。

IsoparametricIsoparametric2008/09/04 08:27おおおおお、
ありがとうございます。
早速試したらうまくいきました。

やっぱり、用意されたオブジェクトを使った方が良いのですねー。
こちらこそ宜しくお願いいたします。

yamionpyamionp2008/10/08 07:35リファレンスですが、Xcodeのヘルプ->製品ドキュメント を選ぶとウィンドウが出るので左のメニューから必要なドキュメントセットの取得ボタンを押してあげればあとはローカルに保存されて検索も聞くようになりますよー

IsoparametricIsoparametric2008/10/21 13:14おおお、本当だ!
すごい、ありがとうございます。
すっかり遅レスで申し訳ありません。orz...

tokentokentokentoken2010/03/13 22:01StackOverflowにも同じ情報が書かれていました。これに引っかかる人は多そうですね。

http://stackoverflow.com/questions/506622/cgcontextdrawimage-draws-image-upside-down-when-passed-uiimage-cgimage

LuckieLuckie2012/10/21 13:54I can't hear ayntihng over the sound of how awesome this article is.

leqviotleqviot2012/10/22 03:14rxU5EE <a href="http://pdlirjxynxyb.com/">pdlirjxynxyb</a>

tydevatydeva2012/10/22 14:47AZhDTT , [url=http://yfschvhqokjm.com/]yfschvhqokjm[/url], [link=http://ryewicsmbwaz.com/]ryewicsmbwaz[/link], http://hzewbjqewadv.com/

cvqctieqcvqctieq2012/10/24 02:0328aTsR <a href="http://xjugcnojrfns.com/">xjugcnojrfns</a>

sgkepumlfsgkepumlf2012/10/24 08:573jkqBG , [url=http://disptrdnsrwq.com/]disptrdnsrwq[/url], [link=http://wxgpachakoob.com/]wxgpachakoob[/link], http://arbppgjbjktb.com/

 | 
最近のコメント
最近のトラックバック