У меня проблемы с рисованием линий шириной в один пиксель. Все линии идеально горизонтальные или вертикальные (я не рисую диагональные линии), но они не рисуются чисто. Похоже, что он рисует через два пикселя в уменьшенном альфа. Без сомнения, из-за сглаживания. Я искал документы и форумы и наткнулся на заявление, в котором говорится, что «нет проблем с рисованием горизонтальных и вертикальных линий шириной в один пиксель ...», но я не знаю, как именно. Любые указатели приветствуются.
Код для рисования прост:
else if ([[value entity].name isEqualToString:@"RTLine"]) {
CGContextSetRGBStrokeColor(ctx, 0, 0, 0, 1);
CGContextSetLineWidth(ctx, [[value valueForKey:@"thickness"] doubleValue]);
CGContextMoveToPoint(ctx, [[value valueForKey:@"beginDrawLocationX"] doubleValue],
[[value valueForKey:@"beginDrawLocationY"] doubleValue]);
CGContextAddLineToPoint(ctx, [[value valueForKey:@"endDrawLocationX"] doubleValue],
[[value valueForKey:@"endDrawLocationY"] doubleValue]);
CGContextStrokePath(ctx);
}
В приведенном выше примере 'толщина' равна 1. Я использовал doubleValue вместо floatValue для преобразования из int в случае, если float преобразовывал значение в нечто не совсем 1 - это не так.