2012-02-27 4 views
8

Я снова здесь с два вопросом, как связан между собойРельефный эффект в Core Graphics

  1. Я хочу обратить рельефные линии с графическим ядром. Может ли кто-нибудь предложить мне, как придать внутренним теням линию, нарисованную на событиях касания?
  2. Даже для рисования внешних теней. Тень нарисована перекрывается между ними. и линия, нарисованная цветами, отличными от черного, похожа на червя .. Может ли кто-нибудь мне помочь? Следующее изображение иллюстрирует то, что я хотел бы объяснить для Вопроса 2: enter image description here Тени создаются даже не. Они темнеют в некоторых точках

Я добавляю код, который я использую, чтобы рисовать линии ..

for (int i=0; i<[currentPath count]; i++) 
    { 
     CGPoint mid1 = [[self midPoint:[currentPath objectAtIndex:i+1] :[currentPath objectAtIndex:i]] CGPointValue]; 
     CGPoint mid2 = [[self midPoint:[currentPath objectAtIndex:i+2] :[currentPath objectAtIndex:i+1]] CGPointValue]; 
     CGContextMoveToPoint(context, mid1.x, mid1.y); 
     CGContextAddQuadCurveToPoint(context, [[currentPath objectAtIndex:i+1] CGPointValue].x, [[currentPath objectAtIndex:i+1] CGPointValue].y, mid2.x, mid2.y); 
     CGContextSetShadow(context, CGSizeMake(-2, -2), 3); 

     CGContextSetLineCap(context, kCGLineCapRound); 
     CGContextSetStrokeColorWithColor(context,[color CGColor]);    
     CGContextSetLineWidth(context, linewidth);    
     CGContextStrokePath(context); 
     i+=2; 
    } 
+2

Пожалуйста, воздержитесь от использования вопросительных знаков в ордах. – Till

+0

@ Теперь все хорошо? – DivineDesert

+0

Пожалуйста, покажите свой код чертежа. Пока вы этого не сделаете, мы можем только догадываться о том, что вы делаете. – sosborn

ответ

4

Я нашел мое решение .. Проблема была очень глупо ... я разжигая путь на каждой итерации, который создает проблемы .. Теперь я могу сделать даже с альфа меньше, чем 1 ..

CGContextStrokePath(context); 

Эта линия выходит наружу для петли .. И все отлично работает сейчас :)

0

Это выглядит, как вы рисуете путь, используя серию кругов.

Проблема в том, что вы установили тень на отдельные точки, и именно поэтому вы получаете странные эффекты.

Возможное решение - не помещайте тени на точки, ставьте на путь: дублируйте линию, которую вы нарисовали, рисуете ее другим цветом, смещаете и помещаете в соответствии с вашей реальной линией.

В качестве альтернативы, если вы используете слои - посмотрите на теневые пути.

+1

Я не рисую путь, используя серию кругов. Поскольку я добавляю тень к строкам, а линии рисуются с помощью массива точек, каждая малая линия покрыта тенью, и поэтому вы можете видеть серию кругов. – DivineDesert

+0

Это аналогичен эффекту, который я получал, когда рисовал линии с альфа-значениями менее 1 .. @Abizern – DivineDesert

3

Для ваших перекрывающихся теней вы хотите, чтобы слой прозрачности сначала составлял их. См. Transparency Layers в Руководстве по 2D-программированию кварца.

+0

Точка u говорила хорошо. Но где я должен добавить слои прозрачности. Поскольку я рисую небольшие линии при касании события. Каждая строка не может быть добавлена ​​к прозрачному слою. Я пробовал это раньше .. Но без положительного решения. Если я делал неправильно, то я не знаю ..Но моя путаница рисует слои прозрачности, кому? – DivineDesert

Смежные вопросы