2016-02-04 2 views
0

Я пытаюсь нарисовать прямоугольник, который имеет угол 15 градусов, разделяющий два цвета по центру, но линия между ними пикселирована. Я пробовал разные варианты смешивания и не могу понять, как сделать этот вид чистым.iOS CGContext Edge не сглажен

This is what the header looks like now

Кто-нибудь знает, как я могу сделать линию между ними выглядят чистыми?

if (!_backgroundImageView.image) { 
    CGFloat width = CGRectGetWidth(self.bounds); 
    CGFloat height = CGRectGetHeight(self.bounds); 
    CGFloat tWidth = 0.26794919243f/*tan(15 degrees)*/ * height; 

    UIGraphicsBeginImageContext(CGSizeMake(width, height)); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    if (_color1) { 
    CGContextSetFillColorWithColor(context, _color1.CGColor); 
    CGContextMoveToPoint(context, 0, 0); 
    CGContextAddLineToPoint(context, 1.0f + RoundPixelValue((width + tWidth)/2.0f), 0); 
    CGContextAddLineToPoint(context, 1.0f + RoundPixelValue((width - tWidth)/2.0f), height); 
    CGContextAddLineToPoint(context, 0, height); 
    CGContextFillPath(context); 
    } 

    if (_color2) { 
    CGContextSetFillColorWithColor(context, _color2.CGColor); 
    CGContextMoveToPoint(context, width, 0); 
    CGContextAddLineToPoint(context, RoundPixelValue((width + tWidth)/2.0f) - 1.0f, 0); 
    CGContextAddLineToPoint(context, RoundPixelValue((width - tWidth)/2.0f) - 1.0f, height); 
    CGContextAddLineToPoint(context, width, height); 
    CGContextFillPath(context); 
    } 

    _backgroundImageView.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 

ответ

0

Основная проблема заключается в том, что вы не создаете контекст с правильным масштабом.

Вместо использования UIGraphicsBeginImageContext использование UIGraphicsBeginImageContextWithOptions следующим образом:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 0); 

Задание шкале от 0 устанавливает его на масштабный коэффициент экрана устройства.

Это должно устранить большинство артефактов псевдонимов.

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

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