2012-02-27 12 views
8

sono di nuovo qui con due domanda, sia collegati traeffetto Rilievo nel core grafico

  1. voglio disegnare le linee in rilievo con core grafico. Qualcuno può suggerirmi come dare ombre interiori alla linea disegnata sugli eventi tattili?
  2. Anche per disegnare ombre esterne. Shadow si sovrappone tra di loro. e la linea disegnata con colori diversi dal nero è come un verme .. Qualcuno può aiutarmi? L'immagine seguente illustra cosa intendo spiegare per la domanda 2: enter image description here Le ombre create non sono uniformi. Si scuriscono in alcuni punti

sto aggiungendo il codice che sto usando per disegnare le linee ..

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

Si prega di astenersi dall'utilizzare i punti interrogativi nelle orde. – Till

+0

@ Fine Bene adesso? – DivineDesert

+0

Si prega di mostrare il codice di disegno. Finché non lo fai, possiamo solo indovinare ciò che stai facendo. – sosborn

risposta

4

ho trovato la mia soluzione .. Il problema era molto stupido ... stavo alimentando percorso su ogni iterazione, che stava creando il problema .. Ora posso disegnare anche con alfa meno di 1 ..

CGContextStrokePath(context); 

Questa riga va fuori per loop .. E tutto funziona bene ora :)

0

Sembra che si sta disegnando il percorso utilizzando una serie di cerchi.

Il problema è che hai impostato l'ombra sui singoli punti, ed è per questo che stai ricevendo gli strani effetti.

Una possibile soluzione: non mettere un'ombra sui punti, mettere il percorso: duplicare la linea che hai disegnato, disegnarla in un altro colore, sfalsarla e inserirla sotto la tua linea attuale.

In alternativa, se si utilizzano i livelli, osservare i percorsi delle ombre.

+1

Non sto disegnando il tracciato usando una serie di cerchi, Dal momento che sto aggiungendo un'ombra alle linee e le linee sono disegnate con una serie di punti, ogni piccola linea è coperta dall'ombra e quindi puoi vedere serie di cerchi. – DivineDesert

+0

è simile all'effetto che stavo ottenendo quando stavo disegnando linee con valori alfa inferiori a 1 .. @Abizern – DivineDesert

3

Per le ombre sovrapposte, si desidera che un livello di trasparenza le componga prima. Vedere Transparency Layers nella Guida alla programmazione 2D di Quartz.

+0

Il punto che hai detto va bene .. Ma dove devo aggiungere i livelli di trasparenza .. Dal momento che sto disegnando piccole linee sul touch eventi .. Ogni riga non può essere aggiunta al livello di trasparenza .. L'ho provato prima .. Ma senza una soluzione positiva .. Se stavo sbagliando, allora non lo so ..Ma la mia confusione sta disegnando strati di trasparenza a chi ?? – DivineDesert

Problemi correlati