2015-07-07 2 views
1

Я создаю демонстрационное приложение IOS, которое будет простым графическим приложением. Я использовал Quartz 2D для создания базового приложения. Тем не менее, линии, которые рисуются, очень зазубрены. Я ищу способ применения сглаживания или смешивания, чтобы сделать линии гладкими. DrawLineFrom выглядит следующим образом:Рисование Гладкие линии с кварцем 2D

func drawLineFrom(fromPoint: CGPoint, toPoint: CGPoint) { 

    UIGraphicsBeginImageContext(view.frame.size) 
    let context = UIGraphicsGetCurrentContext() 
    tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height)) 


    CGContextMoveToPoint(context, fromPoint.x, fromPoint.y) 
    CGContextAddLineToPoint(context, toPoint.x, toPoint.y) 
    CGContextSetAllowsAntialiasing(context, true) 
    CGContextSetShouldAntialias(context, true) 


    CGContextSetLineCap(context, kCGLineCapRound) 
    CGContextSetLineWidth(context, brushWidth) 
    CGContextSetRGBStrokeColor(context, red, green, blue, 1.0) 
    CGContextSetBlendMode(context, kCGBlendModeNormal) 


    CGContextStrokePath(context) 


    tempImageView.image = UIGraphicsGetImageFromCurrentImageContext() 
    tempImageView.alpha = opacity 
    UIGraphicsEndImageContext() 

} 

Проект можно найти здесь: https://github.com/BananaSplitio/OpenSketch

Спасибо за помощь!

ответ

1

Я знаю, что я массово опоздал на вечеринку здесь, но если вы изменили:

UIGraphicsBeginImageContext(view.frame.size)

в

UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0f);

, который должен решить проблему с зубчатой ​​линией. Последний аргумент 0.0f определяет масштаб экрана. Установка этого параметра на 0.0f автоматически установит его на разрешение устройства. Без этого он рисует его с 1 точкой = 1 пиксель (так не сетчаткой), заставляя вещи выглядеть зубчатыми.

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