Перекрывающиеся и соприкасающиеся прямоугольники CoreGraphics имеют границу .5px - PullRequest
1 голос
/ 03 мая 2009

Мои основные графические заливки ведут себя странно, когда они сближаются, касаются друг друга или перекрывают друг друга. Эта проблема возникает на iPhone Simulator и iPhone OS 2.2.

Здесь у нас есть две метки и пользовательский вид с двумя CGContextFillRect ():

проблема перекрытия

Когда синие и красные соединены вместе, они развивают эту раздражающую линию слияния .5px. Я не могу избавиться от этого или даже изменить его цвет.

Эта версия имеет разрыв в 1 пиксель между прямоугольниками и, конечно, заполнена черным фоном:

разрыв в пикселях

Я пытался отключить сглаживание, но это не решает проблему.

- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetAllowsAntialiasing(context, false);

CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
CGContextFillRect(context, CGRectMake(20.0, 35.0 + 40 + 20 , 100, 40));

CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, CGRectMake(20.0 + 100 , 35.0 + 40 + 20 , 100, 40));

CGContextSetAllowsAntialiasing(context, true);

}

Есть идеи?

1 Ответ

0 голосов
/ 03 мая 2009

Там нет дефектов. Это оптический обман. Ваш глаз интегрирует значения R & B близко друг к другу и выводит перекрытие белого.

Посмотрите на графику с pixie (часть Xcode) или xscope (платное обновление от iconfactory).

http://www.freeimagehosting.net/uploads/th.e015daef50.png>

...