2012-02-15 4 views
2

Objective-C Ответы хорошо, я использую MonoTouch для справки.iPhone: Retina Display Writing Font to UIImage

Я пишу текст поверх UIImage. Retina отображает шрифт прерывистым способом. Выглядит пиксель в два раза, и я думаю, это то, что происходит. Как я могу получить хрустящий шрифт, написанный на UIImage?

//context is a CGBitmapContext 

context.SetFillColor (color.CGColor); 
context.SelectFont (font.Name, font.PointSize, CGTextEncoding.MacRoman); 

context.SetTextDrawingMode (CGTextDrawingMode.Fill); 
context.ShowTextAtPoint (pt.X, pt.Y, text); 

enter image description here

+0

где вы делаете этот рисунок? Есть ли особая причина, по которой вы используете CGBitmapContext? – jackslash

ответ

5

при создании контекста изображения, вы должны вызвать

UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale); 

не регулярные UIGraphicsBeginImageContext, это создаст контекст, способный дисплей на дисплее Retina.

+0

Блестящий, блестящий, блестящий! Спасибо. У меня была такая же проблема (шрифты выглядели нечеткими, когда они были нарисованы на UIImage), и это прекрасно фиксировало это. –

1

Попробуйте округление координат, в которой вы отображения текста. Также проверка кнопки в целом на целочисленные смещения. Если вы размещаете элементы при нецелочисленных смещениях, iOS с радостью перейдет и будет интерполировать вашу графику, делая вещи «нечеткими».

+0

Хотя ваш ответ верен в некоторых случаях в этом случае, это неверно. При рисовании в CGBitmapContext, размер которого не отображается на экране сетчатки, изображение будет растрировано маленьким, а затем увеличено. Отвлекаясь от границ пикселей, действительно необходимо в обычном контексте, когда хранилище резервных копий может быть или не быть удвоенным размером точки – jackslash

+0

Но кто говорит, что содержимое этого CGBitmapContext в конечном итоге отображается при целочисленных смещениях? – mvds

+0

Не имеет значения, являются они или нет, факт состоит в том, что CGBitmapContexts имеют размер в пикселях, а не в точках и, как таковой, не будут автоматически настраиваться для отображения сетчатки. Видимость, которую видит разработчик, вызвана удвоением пикселей и не выравниванием шрифта с смещением пикселей. – jackslash

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