Sto cercando di capire il sistema di coordinate quarzo 2d, Attualmente sto leggendo la guida di riferimento Apple e il vecchio libro "Quartz 2d graphics for mac os x developer".Impossibile capire la trasformazione del sistema di coordinate della core grafica iOS, ho bisogno di assistenza
Capisco il concetto di spazio utente e il concetto di spazio del dispositivo che lo spazio del dispositivo può avere un diverso sistema di coordinate di default e le coordinate dello spazio del dispositivo non possono essere modificate, e mappiamo lo spazio utente modificando il suo sistema di coordinate allo spazio del dispositivo per raggiungere il risultato del desiderio.
- prima parte del problema
quarzo grafica 2D per Mac Book os x sviluppatore dice:
Quando si trasforma un sistema di coordinate, è necessario disporre di un altro sistema di coordinate per confrontarlo con. La trasformazione fornisce un mapping relativo da un sistema di coordinate all'altro. Quando si estrae nel sistema di coordinate trasformate, la trasformazione mappa il grafico sul primo sistema di coordinate. L'aspetto di quella grafica nel sistema di coordinate fisso è influenzata dalla trasformazione .
non ho ricevuto questo punto in grassetto.
E
Quartz 2D programming guide dice:
quarzo compie l'indipendenza dispositivo con un separato coordinate sistema-user space-mappatura al sistema di coordinate dell'uscita dispositivo-dispositivo di dimensioni utilizzando la corrente matrice di trasformazione o CTM. Una matrice è un costrutto matematico utilizzato per descrivere in modo efficiente un set di equazioni correlate. L'attuale matrice di trasformazione è un tipo particolare di matrice chiamato trasformata affine, che mappa i punti da uno spazio di coordinate a un altro applicando la traslazione, la rotazione e le operazioni di ridimensionamento (calcoli che si spostano, ruotano e ridimensionamento di un sistema di coordinate) .
L'attuale matrice di trasformazione ha uno scopo secondario: consente a di trasformare la modalità di disegno degli oggetti. Ad esempio, per disegnare una casella ruotata di 45 gradi, ruotare il sistema di coordinate della pagina (CTM) prima di disegnare la casella. Quartz disegna sul dispositivo di output utilizzando il sistema di coordinate ruotato.
La confusione è che "Quartz richiama al dispositivo di uscita utilizzando il sistema di coordinate ruotato.", Se voglio disegnare un oggetto (immagini, ecc) ruotata e l'altro con la rotazione fuori allora cosa succederà? Abbiamo intere coordinate ruotate ogni cosa che verrà disegnata viene ruotata?
Sto provando diversi esperimenti ma non riesco a capovolgerlo, creo un'immagine il mio disegno due righe replicando il sistema di coordinate in basso a sinistra in photoshop e poi aggiunto al mio progetto per vedere visibilmente come si comportano le coordinate chiamando CGContextRotateCTM(myContext, 45);
in metodo drawrect, ma non ha fatto nulla per l'immagine che ho incluso nel file xib usando l'interfaccia builder che inserisce l'immagine all'interno di uiimage.
questo codice da Quartz 2D guida di programmazione
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGRect contextRect = self.bounds;
CGContextTranslateCTM(myContext, 0, contextRect.size.height);
CGContextRotateCTM(myContext, 45); //my modification
CGContextScaleCTM(myContext, 1, -1);
float w, h;
w = contextRect.size.width;
h = contextRect.size.height;
CGAffineTransform myTextTransform;
CGContextSelectFont (myContext, "Helvetica-Bold", h/10, kCGEncodingMacRoman);
CGContextSetCharacterSpacing (myContext, 10);
CGContextSetTextDrawingMode (myContext, kCGTextFillStroke);
CGContextSetRGBFillColor (myContext, 0, 1, 0, .5);
CGContextSetRGBStrokeColor (myContext, 0, 0, 1, 1);
myTextTransform = CGAffineTransformMakeRotation(0);
CGContextSetTextMatrix (myContext, myTextTransform);
CGContextShowTextAtPoint (myContext, 0, 50, "Quartz 2D", 9);
ma questo codice sta modificando il testo elaborato sullo schermo non l'immagine che ho aggiunto?
- Seconda Parte del problema
Questo è anche da Quartz 2D guida di programmazione:
... applicare una trasformazione che si traduce l'origine al in alto a sinistra angolo del contesto PDF e ridimensiona la coordinata y di -1.
L'utilizzo di una trasformazione di ridimensionamento per annullare la coordinata y altera alcune convenzioni nel disegno al quarzo. Ad esempio, se si chiama CGContextDrawImage per disegnare un'immagine nel contesto, l'immagine è modificata dalla trasformazione quando viene disegnata nella destinazione. ...
Sto già facendo questo -1 cosa ma nessun effetto sull'immagine e questa cosa -1 non mi è ancora chiara.
Ho letto più volte questo documento, ho provato a cercare su google ma non sono stati utili tutorial e anche gli ultimi libri sono disponibili solo per i libri scritti nel 2004, 2005, 2006. Qualcuno può aiutarmi o può riferirmi risorse utili a imparare questo in profondità.
Aspettando disperatamente le risposte, ho davvero bisogno di aiuto. Grazie.
questo è esattamente quello che voglio che cancelli i miei concetti. Grazie mille. – Pamy