2011-01-12 10 views
1

私はアプリケーションのNSImageにNSStringを追加しようとしています。なんらかの理由でそれは非常にぼやけて騒々しいようです。ここにjpegとして保存される出力があります。NSString drawAtPoint - ぼやけて

http://i.stack.imgur.com/QHVQF.jpg

私はそれが原因の数字を四捨五入されていないが、何も変更していないようだ時点でそれを描くに行ったことがあるかもしれないことを読みました。コードが正確に整数であることを確認しました。ここで

は、私は、テキストを追加する方法です:

[generatedRectangle lockFocus]; 
//Draw according to the settings 
[color set]; 
NSRectFill(NSMakeRect(0, 0, sizeX, sizeY)); 


NSPoint p = NSMakePoint(round(sizeX/2), round(sizeY/2)); 

[text drawAtPoint:p withAttributes:NULL]; 

その後、私はNSBitmapImageRepでそれをキャプチャすることにより、それを保存し、保存パネルにそれを渡します。 私は実際には、このコマンドでファイルを書き込む:テキストはとてもぼやけている理由について

[[generatedRect representationUsingType: NSJPEGFileType properties: nil] 
    writeToFile:[save filename] atomically: YES]) 

任意のアイデア?私は少し前にアイデアを使い果たしました。

すべてのサポートをよろしくお願いいたします。

+0

、generatedRectangleオブジェクト、NSViewのは何ですか? drawRect:メソッドで描画を行うべきではありませんか? –

+0

generatedRectangleはNSImageです。混乱させて申し訳ありません。 – mbseid

答えて

8

Quartzは中間ピクセルの境界線を描画するので、-drawAtPoint:withAttributes:座標が整数ではなく、XとYの半分のピクセルでオフセットされていることを確認する必要があります(例:10.0ではなく10.5,10.5、 10.0)。

また、階層内のビューがすべてピクセル境界で起点していることを確認してください。テキスト描画ビューの1つのスーパービューがオフになっていても、レンダリングがぼやけることがあります。コアアニメーション機器のColor Misaligned Layersオプションを使用して、これらのビューがレイヤーバックされている場合、これを追跡することができます。

2

それは私に過度のJPEG圧縮のように見えます。圧縮の量はNSImageCompressionFactorプロパティで指定できます。圧縮を行わない場合は、[NSNumber numberWithFloat:1.0]に設定します。

15

私は描画するコンテキストを作成したときに鉱山での問題は、網膜ディスプレイ用の適切なスケールファクタを使用していませんでした。

UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0f); 

あなたがUIGraphicsBeginImageContext(<#CGSize size#>)を使用する場合は、それはそれようのiOS 4.0と下位APIです」あたかも網膜に表示されていないかのように描きます。

2

ちょうどこの問題がありました。これはあなたが必要とするすべてである:私はあなたのコードを実装しようとしている中

CGContextSetShouldAntialias(yourcontext, true);

関連する問題