¿La image girada se distorsiona y se vuelve borrosa?

Yo uso una vista de image:

@IBOutlet weak var imageView: UIImageView! 

para pintar una image y también otra image que ha sido rotada. Resulta que la image girada tiene muy mala calidad. En la siguiente image, las gafas en la caja amarilla no se giran. Las gafas en el cuadro rojo giran 4,39 grados.

introduzca la descripción de la imagen aquí

Aquí está el código que uso para dibujar las gafas:

 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 networking 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.networkingColor().CGColor) CGContextSetLineWidth(drawCtxt, 1) // draw the networking rect CGContextStrokeRect(drawCtxt, newRect) // draw the image CGContextDrawImage(drawCtxt, newRect, glassImage!.CGImage) CGContextRestoreGState(drawCtxt) 

¿Cómo puedo rotar y pintar las gafas sin perder calidad o get una image distorsionada?

Debe usar UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) para crear el context inicial. Al pasar 0.0 , la scale pnetworkingeterminada será la escala de la pantalla actual (por ejemplo, 2.0 en un iPhone 6 y 3.0 en un iPhone 6 Plus).

Consulte esta nota en UIGraphicsBeginImageContext() :

Esta function es equivalente a llamar a la function UIGraphicsBeginImageContextWithOptions con el parámetro opaco establecido en NO y un factor de escala de 1.0.

Como otros han señalado, debe configurar su context para permitir las pantallas de retina.

Aparte de eso, es posible que desee usar una image de origen que sea más grande que el tamaño de pantalla de destino y networkingucirla. (2X las dimensiones de píxeles de la image de destino sería un buen lugar para comenzar).

Girar a angularjs extraños es destructivo. El motor de charts tiene que asignar una cuadrícula de píxeles de origen a una cuadrícula diferente en la que no se alinean. Las líneas perfectamente rectas en la image de origen ya no son rectas en la image de destino, etc. El motor de charts tiene que hacer alguna interpolación, y un píxel fuente puede extenderse en varios píxeles, o less de un píxel completo, en la image de destino.

Al proporcionar una image de fuente más grande le das al motor de charts más información para que funcione. Puede dividir y dividir mejor esos píxeles de origen en la cuadrícula de píxeles de destino.