Hatena::Groupiphone-dev

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

2008-09-02

MOSAのドキュメントお勧め

| 08:35 | MOSAのドキュメントお勧め - 神様なんて信じないんだからね! を含むブックマーク はてなブックマーク - MOSAのドキュメントお勧め - 神様なんて信じないんだからね! MOSAのドキュメントお勧め - 神様なんて信じないんだからね! のブックマークコメント

MOSAのテクニカルドキュメントが良さそう。

http://www.mosa.gr.jp/?page_id=19

普通のOSX向けのものだが、

Cocoaに対するグラフィックやテキスト周り、

OpenGL周りのテキストとしては良い感じなり。

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に負の値を与えると、ディスプレイの下に対して移動する。

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

Quartz で状態のPushとPop

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

例えばQuartzで描いているとき、

ダッシュ線を使いたくて

コンテキストに対してダッシュ線を適応するために、

CGContextSetLineDash

を呼んでしまうと、次に線を描くときまでダッシュ線になってしまう。

そういうときは、

CGContextSaveGState(context);
...ごにょごにょ
CGContextRestoreGState(context);

とすると、

これらの間にステートを変更しても

元のステートに戻る。

恐らく描画オブジェクト単位で行うと良い。

対応があわないと、バグるので注意。

Quartz 2DリファレンスをXCodeから使えないのかな……

| 08:09 | Quartz 2DリファレンスをXCodeから使えないのかな…… - 神様なんて信じないんだからね! を含むブックマーク はてなブックマーク - Quartz 2DリファレンスをXCodeから使えないのかな…… - 神様なんて信じないんだからね! Quartz 2DリファレンスをXCodeから使えないのかな…… - 神様なんて信じないんだからね! のブックマークコメント

Quartz 2DのAPIを探すとき、

わざわざWebから引っ張るのは面倒な感じ。

XCodeってリファレンスインストールできないのかな。

Quartzと日本語

| 07:57 | Quartzと日本語 - 神様なんて信じないんだからね! を含むブックマーク はてなブックマーク - Quartzと日本語 - 神様なんて信じないんだからね! Quartzと日本語 - 神様なんて信じないんだからね! のブックマークコメント

Quartzで日本語出力を調べると、

	CGContextSelectFont(context, "HiraKakuProN-W3", 32, kCGEncodingFontSpecific);
	NSString* message = @"abcdefg";
	CGContextShowTextAtPoint(context, 10, 100, [message UTF8String], [message length]);

みたいな感じで出力できる筈なのだが、

見事に化ける。

ASCIIの文字列を渡しているのに化ける、というのが何となく納得いかないのだが……。

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

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

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

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

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

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

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

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

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

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

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

cvqctieqcvqctieq 2012/10/24 02:03 28aTsR <a href="http://xjugcnojrfns.com/">xjugcnojrfns</a>

sgkepumlfsgkepumlf 2012/10/24 08:57 3jkqBG , [url=http://disptrdnsrwq.com/]disptrdnsrwq[/url], [link=http://wxgpachakoob.com/]wxgpachakoob[/link], http://arbppgjbjktb.com/

ゲスト



トラックバック - http://iphone-dev.g.hatena.ne.jp/Isoparametric/20080902
最近のコメント
最近のトラックバック