2013-04-08 14 views
7

Я развиваюсь в Xamarin и хотел бы нарисовать простой круг с текстом «CIRCLE» внутри него и отобразить это изображение в UIImageView. Проблема в том, что круг и текст выглядят очень размытыми. Я немного читал о субпикселях, но я не думаю, что это моя проблема.IOS рисунок простого изображения получается размытым, используя Xamarin C#

Вот расплывчатое изображение и код, в надежде кого-то есть какие-то идеи :)

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 масштабирует изображение (нет исходного кода) или из-за удвоения пикселей (для отображения сетчатки). В последнем случае, что вы действительно хотите использовать это:

UIGraphics.BeginImageContextWithOptions (size, false, 0); 

, который (с использованием 0) автомагически использовать право коэффициент масштабирования для сетчатки (или нет), дисплей - и выглядят четкими (и не слишком большой) на всех типах устройств.

+0

Удвоение пикселей для сетчатки было проблемой, и ваше предложение разрешило ее. Хорошая работа, спасибо :) –

 Смежные вопросы

  • Нет связанных вопросов^_^