2013-04-08 20 views
7

私はXamarinで開発中で、その中にテキスト "CIRCLE"を含む単純な円を描き、その画像をUIImageViewに表示します。問題は、円とテキストが非常にぼやけて見えることです。私はサブピクセルについて少しは読んだことがあるが、それは私の問題だとは思わない。Xamarin C#を使用してIOS画像を単純に描画するとぼやけて表示されます。

ここでぼやけた画像と、コードは、誰かがいくつかのアイデアを持っている:)

UIGraphics.BeginImageContext (new SizeF(150,150)); 
var context = UIGraphics.GetCurrentContext(); 

var content = "CIRCLE"; 
var font = UIFont.SystemFontOfSize (16); 

const float width = 150; 
const float height = 150; 

context.SetFillColorWithColor (UIColor.Red.CGColor); 
context.FillEllipseInRect (new RectangleF (0, 0, width, height)); 

var contentString = new NSString (content); 
var contentSize = contentString.StringSize (font); 

var rect = new RectangleF (0, ((height - contentSize.Height)/2) + 0, width, contentSize.Height); 

context.SetFillColorWithColor (UIColor.White.CGColor); 
new NSString (content).DrawString (rect, font, UILineBreakMode.WordWrap, UITextAlignment.Center); 

var image = UIGraphics.GetImageFromCurrentImageContext(); 
imageView.Image = image; 

Blurry Circle

答えて

12

それがリサイズされたので、それがぼやけていた理由がある期待して、です。そのビットマップは150x150ではありません(作成したコンテキストのように)、333x317ピクセルです。

imageViewは画像(ソースコードはありません)またはピクセル倍増(網膜ディスプレイ用)のためスケーリングされている可能性があります。あなたが本当に使いたいもの後者の場合である:(0を使用して)します

UIGraphics.BeginImageContextWithOptions (size, false, 0); 

自動的に右の網膜のためのスケーリング係数(またはしない)ディスプレイを使用する - そして、すべてのタイプの鮮明な(と特大ではない)を見てのデバイスの。

+0

網膜のピクセル倍増は問題であり、あなたの提案はそれを解決しました。良い仕事、ありがとう:) –

関連する問題