iPhone Как обрезать рисунок полумесяца - PullRequest
2 голосов
/ 12 декабря 2011

С помощью переполнения стека я знакомлюсь с рисованием кварца в 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);

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

1 Ответ

0 голосов
/ 12 декабря 2011

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

...