Próbuję zrozumieć układ współrzędnych kwarcu 2d, obecnie czytam przewodnik referencyjny Apple i starą książkę "Grafika kwarcowa 2d dla mac os x programisty".Nie można zrozumieć transformacji układu współrzędnych grafiki iOS, potrzebuję pomocy
Rozumiem koncepcję przestrzeni użytkownika i przestrzeni urządzenia, w której przestrzeń urządzenia może mieć inny domyślny układ współrzędnych, a współrzędne przestrzeni urządzenia nie mogą być modyfikowane, a my mapujemy przestrzeń użytkownika poprzez modyfikację systemu współrzędnych do przestrzeni urządzenia, aby osiągnąć pożądany rezultat.
- Pierwsza część problemu
Quartz grafiki 2D dla Mac Book OS X deweloper mówi:
Po transformacji układu współrzędnych, musisz mieć inny układ współrzędnych , aby go porównać. Transformacja zapewnia relatywne mapowanie z jednego układu współrzędnych na drugi. Po uzyskaniu w przekształconym układzie współrzędnych transformacja odwzorowuje grafikę z powrotem na pierwszy układ współrzędnych (). Wygląd tej grafiki w ustalonym układzie współrzędnych zależy od transformacji .
Nie rozumiem tego pogrubienia.
I
Quartz 2D programming guide mówi:
Quartz osiąga niezależność urządzenie z osobna koordynować System-user space-przyporządkowując je do układu współrzędnych wyjścia urządzenie-urządzenie przestrzeń wykorzystujących prąd macierz transformacji lub CTM. Macierz jest konstrukcją matematyczną używaną do wydajnego opisu zbioru powiązanych równań. Bieżąca macierz przekształceń jest konkretnym rodzajem macierzy zwanej transformacją afiniczną, która mapuje punktów z jednej przestrzeni współrzędnych na drugą, stosując obrót, obracanie i operacje skalowania (obliczenia, które się przesuwają, obracają, i zmieniają rozmiar układu współrzędnych) .
Obecna macierz przekształceń ma cel drugorzędny: umożliwia przekształcenie sposobu rysowania obiektów przez . Na przykład, aby narysować pole obrócone o 45 stopni, należy obrócić układ współrzędnych strony (WZT) przed rysowaniem ramki. Kwarcowy ciągnie do urządzenia wyjściowego przy użyciu obróconego układu współrzędnych.
Zamieszanie jest to, że „Quartz zwraca do urządzenia wyjściowego za pomocą obróconego układu współrzędnych.”, Jeśli chcę, aby narysować jeden obiekt (zdjęcie itp) obracane i innych z zewnątrz obrotów potem co się stało? Mamy obrócone wszystkie współrzędne, a wszystko, co zostanie narysowane, jest obracane?
Próbuję różnych eksperymentów, ale nie mogę tego objąć, tworzę obraz, rysując dwie linie, replikując dolny lewy układ współrzędnych w programie photoshop, a następnie dodając do mojego projektu, aby zobaczyć, jak zachowują się współrzędne, dzwoniąc pod numer CGContextRotateCTM(myContext, 45);
. metoda drawrect, ale nie zrobiła nic, co obraz, który zawarłem w pliku xib za pomocą budowniczego interfejsu umieszczającego obraz wewnątrz uiimage.
ten kod jest z kwarcowego 2D przewodnika programowego
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);
ale ten kod jest modyfikowanie tekstu rysowane na ekranie obraz nie dodałem?
- druga część problemu
Jest to również z Quartz 2D przewodnika programowego:
... zastosowanie transformacji, który tłumaczy pochodzenie do górny lewy róg kontekstu PDF i skaluje współrzędną y o -1.
Użycie przekształcenia skalowania w celu zanegowania współrzędnej y zmienia niektóre konwencje w rysunku kwarcu. Na przykład, jeśli wywołasz CGContextDrawImage, aby narysować obraz w kontekście, obraz jest zmodyfikowany przez transformację, gdy jest wciągany do miejsca docelowego. ...
Już robię to -1 rzeczy, ale nie ma wpływu na obraz i to -1 rzeczy nadal nie jest dla mnie jasne.
Przeczytałem ten dokument kilka razy, próbowałem wyszukiwania w google, ale bez użytecznych samouczek, a także nie najnowsze książki są dostępne tylko książki napisane w 2004, 2005, 2006. Czy ktoś może pomóc w tej sprawie lub może odnieść mi przydatne zasoby do naucz się tego dogłębnie.
Desperacko czekając na odpowiedzi, naprawdę potrzebujesz pomocy. Dziękuję.
to właśnie to, co chcę, oczyściło moje koncepcje. Dziękuje bardzo. – Pamy