Я использую вид изображения:Поворот изображения искажается и размывается?
@IBOutlet weak var imageView: UIImageView!
окрасить изображение, а также другое изображение, которое было повернуто. Оказывается, что повернутое изображение имеет очень плохое качество. На следующем изображении очки в желтой коробке не вращаются. Очки в красной коробке повернуты на 4.39 градуса.
Вот код я использую, чтобы сделать очки:
UIGraphicsBeginImageContext(imageView.image!.size)
imageView.image!.drawInRect(CGRectMake(0, 0, imageView.image!.size.width, imageView.image!.size.height))
var drawCtxt = UIGraphicsGetCurrentContext()
var glassImage = UIImage(named: "glasses.png")
let yellowRect = CGRect(...)
CGContextSetStrokeColorWithColor(drawCtxt, UIColor.yellowColor().CGColor)
CGContextStrokeRect(drawCtxt, yellowRect)
CGContextDrawImage(drawCtxt, yellowRect, glassImage!.CGImage)
// paint the rotated glasses in the red square
CGContextSaveGState(drawCtxt)
CGContextTranslateCTM(drawCtxt, centerX, centerY)
CGContextRotateCTM(drawCtxt, 4.398 * CGFloat(M_PI)/180)
var newRect = yellowRect
newRect.origin.x = -newRect.size.width/2
newRect.origin.y = -newRect.size.height/2
CGContextAddRect(drawCtxt, newRect)
CGContextSetStrokeColorWithColor(drawCtxt, UIColor.redColor().CGColor)
CGContextSetLineWidth(drawCtxt, 1)
// draw the red rect
CGContextStrokeRect(drawCtxt, newRect)
// draw the image
CGContextDrawImage(drawCtxt, newRect, glassImage!.CGImage)
CGContextRestoreGState(drawCtxt)
Как можно вращать и рисовать очки без потери качества или получить искаженное изображение?
Помогает ли вам создать контекст с помощью 'UIGraphicsBeginImageContextWithOptions (..., 0.0)', чтобы получить контекст чертежа, который использует тот же масштабный коэффициент, что и ваше устройство? –
@MartinR, размер которого я должен использовать для создания контекста? –