2010-01-19 7 views
5

создать круг с хорошей тени с этим кодом (я использую MonoTouch.net для iPhone, Objective-C ответы хороши, конечно)iPhone ясно CGContext

 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, я создаю изображение)

ответ

13

Если вы хотите очистить все, что нарисовано, чтобы у вас был пустой холст, попробуйте CGContextClearRect перед тем, как нарисовать что-нибудь.

Но я думаю, вы имеете в виду, что хотите, чтобы тень, цвет заливки и т. Д. Применялись только к этому эллипсу, а не к тому, что вы рисуете впоследствии. Для этого вы хотите снова вызвать одни и те же методы настройки состояния, но с разными аргументами. Например, CGContextSetShadowWithColor ожидает цвет тени. Но если вы передадите NULL для этого аргумента, он отключит затенение.

См. Также CGContextSetShadow documentation, в котором есть заметка о всех способах отключения теневого копирования. Выберите лучший для вас.

Я думаю, что ваша главная проблема заключается в том, что вы не пользуетесь превосходной документацией Apple. Я понимаю, что MonoTouch.net по существу сопоставляет API Objective-C с модулями .NET с похожими или идентичными именами символов. Таким образом, с помощью быстрого поиска Google вы сможете найти соответствующую документацию в справочной библиотеке iPhone OS.

+0

Это очищает круг я просто нарисовал хотя –

+0

А я неправильно понял. Редактирование моего ответа. –

1

Перед тем, как начать рисовать, сохранить состояние:

CGContextSaveGState(ctx); 

Затем после того, как мы закончили, вернуть состояние к тому, что это было в начале:

CGContextRestoreGState(ctx);