iPhone Как вырезать рисунок полумесяца

С помощью переполнения стека я знакомлюсь с рисованием кварца в iPhone. Я хочу сделать код, который обрезает шаблон полумесяца, это то, что у меня есть до сих пор, но он работает не совсем так, как я ожидаю:

contextRef = UIGraphicsGetCurrentContext();
CGContextSaveGState(contextRef);
onlyDrawTopHalf = YES;
halfMultiplier = onlyDrawTopHalf ? -1.0 : 1.0;
ellipse = CGRectMake(50, 50, 128, 128);
clipRect = CGRectOffset(ellipse, halfMultiplier * ellipse.size.width / 2, 0);
CGContextClipToRect(contextRef, clipRect);
CGContextRestoreGState(contextRef);


onlyDrawTopHalf = YES;
halfMultiplier = onlyDrawTopHalf ? -1.0 : 1.0;
ellipse = CGRectMake(50, 50, 100, 128);
clipRect = CGRectOffset(ellipse, halfMultiplier * ellipse.size.width / 2, 0);
CGContextAddEllipseInRect(contextRef, clipRect);
CGContextEOClip(contextRef);
CGContextFillEllipseInRect(contextRef, ellipse);

Если быть точным, первый абзац кода рисует круг (это работает), второй должен вырезать из него эллипс, но это не работает должным образом.


person MegaManX    schedule 12.12.2011    source источник
comment
попробуйте сначала установить отсечение, прежде чем рисовать круг.   -  person Ben    schedule 12.12.2011


Ответы (1)


Обе формы должны быть идеальными кругами, а не эллипсами. Радиус второго круга должен быть немного меньше, и он должен быть немного смещен вправо (или влево), чтобы получить идеальный эффект полумесяца.

person Emir Akaydın    schedule 12.12.2011
comment
У них одинаковые стартовые точки (50, 50), но разные радиусы (100, 128) и (128, 128). - person MegaManX; 12.12.2011
comment
Затем вы должны немного сдвинуть констатирующие пункты. и используйте идеальную форму круга вместо эллипса. (100, 100) вместо (128, 128), например. - person Emir Akaydın; 12.12.2011
comment
Мне не нужны идеальные круги. Я хочу нарисовать круг, а затем вырезать из него область в форме эллипса. Первый абзац рисует круг (это работает), второй должен вырезать из него эллипс, но это не работает должным образом. Как я могу это решить? - person MegaManX; 12.12.2011