3 Stimmen

Formtransformation mit Quartz (iOS)

Ich muss ein Zeichenwerkzeug programmieren, das Formen auf einer Ebene darstellen soll. Diese Formen können entweder willkürliche Formen sein, wie eine Elipse oder ein Würfel, oder ein Bild, das auf der Ebene gezeichnet wird.

Was ich tun muss, ist, mit Hilfe von Markierungspunkten, die überall um diese Formen herum positioniert sind, in der Lage zu sein, sie zu transformieren, indem ich die Markierungen bewege. Wenn ich zum Beispiel vier Marker oben, unten, links und rechts positioniert habe, sollte ich die Form horizontal strecken können, indem ich den linken und rechten Marker bewege.

Ich kann keine geometrischen Eigenschaften der Form verwenden (wie z. B. das Ändern des Radius der Ellipse), da ich in der Lage sein muss, dies für beliebige Formen (wie Bilder) zu tun.

Ich habe nicht viel Erfahrung mit Bildbearbeitungsalgorithmen, kann mir jemand einen Tipp geben, wo ich anfangen soll? Eventuell beste Praxis, um es gut zu machen oder sogar einen guten Algorithmus, um das zu tun?

Ich entwickle für die iOS-Plattform.

0voto

Sneakyness Punkte 5213

Haben Sie einen Blick auf die Quartz 2D Programmieranleitung im Apple Developer Center ?

0voto

Lou Franco Punkte 85315

So zeichnen Sie auf ein UIImage

UIGraphicsBeginImageContext(CGSizeMake(width, height)); 
// do your drawing operations
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();

So können Sie das Bild skalieren

UIGraphicsBeginImageContext(CGSizeMake(scaledWidth, scaledHeight)); 
[image drawInRect:CGRectMake(0,0, scaledWidth, scaledHeight)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();

Sie müssen nicht in zwei Schritten vorgehen, sondern können einfach jedes Element skaliert zeichnen. Das wäre besser für das Zeichnen ohne Bild.

Wenn Sie eine CGContextRef zum Zeichnen benötigen, können Sie dies verwenden

CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X