Я создаю круг с хорошей тенью с этим кодом (я использую MonoTouch.net для iPhone, ответы Objective C прекрасны, конечно),
UIGraphics.PushContext (ctx);
SizeF shadowSize = new SizeF (0f, -3f);
ctx.SetRGBFillColor (194f / 255f, 212f / 255f, 238f / 255f, 1f);
ctx.SetAllowsAntialiasing (true);
ctx.SetShadowWithColor (shadowSize, 20, new CGColor (0.9f, 0.7f));
RectangleF area = new RectangleF (35f, 15f, 210f, 210f);
ctx.FillEllipseInRect (area);
UIGraphics.PopContext ();
Затем я хочу добавить к нему дугу и строки. Когда я делаю, цвета и тень и т.д., кажется, слоняются поблизости? Как делают я 'запускаю новый' при рисовании моего UIView? (Это - все в том же UIView; я создаю изображение),
Если вы хотите очистить все, что нарисовано, так что у вас есть пустой холст, попробуйте CGContextClearrect
, прежде чем делать что-либо.
Но я думаю, что вы имеете в виду, что вы хотите, чтобы тень, заполнить цвет и т. Д. Чтобы применить только к этому эллипсу, а не к тому, что вы рисуете позже. Для этого вы хотите снова вызвать одни и те же методы настройки состояний, но с разными аргументами. Например, CGContextsetshadowWithColor
ожидает теневого цвета. Но если вы пройдете NULL
для этого аргумента, он отключит затенение.
См. Также CGContextsetshadow
Документация , которая имеет записку обо всех способах отключения затенения. Выберите лучший для вас.
Я думаю, что ваша главная проблема заключается в том, что вы не используете преимущества отличной документации Apple. Я собираю это monotouch.net по существу на картах appive-c apis к модулям .net с аналогичными или идентичными именами символов. Таким образом, с быстрым поиском Google вы сможете найти соответствующую документацию в ссылочной библиотеке ОС iPhone.
Прежде чем мы начнем рисовать, сохранить состояние:
CGContextSaveGState(ctx);
Тогда после того, как мы закончили, верните государство к тому, что он был в начале:
CGContextRestoreGState(ctx);