Witam,
Pisze program, ktory ma przetworzyc obraz. Oryginalna grafike rysuje w polu obrazek. Natomiast chcialbym obrocic ten obrazek i umiescic go w drugim polu - obrazek_enhanced. Mam do tego taki kod:
O ile zaladowanie obrazka to pikus o tyle wykonywanie czynnosci na tym obrazku jest juz troche trudniejsze. Wydaje mi sie, ze blad lezy gdzies w przekazywaniu obiektu ale nie dam sobie glowy uciac.Kod:#import "Obrazek.h" @implementation Obrazek - (IBAction) Button: (id) sender { NSImage *mojObrazek = [NSImage imageNamed:@"finger2.jpg"]; [obrazek setImage: mojObrazek]; [width setIntValue: mojObrazek.size.width]; [height setIntValue: mojObrazek.size.height]; [mojObrazek Rotate: mojObrazek]; [obrazek_enhanced setImage: mojObrazek]; } - (NSImage *) Rotate: (NSImage *) obraz clockwise: (BOOL) clockwise { NSImage *existingImage = obraz; NSSize existingSize; existingSize.width = [[existingImage bestRepresentationForDevice: nil] pixelsWide]; existingSize.height = [[existingImage bestRepresentationForDevice: nil] pixelsHigh]; NSSize newSize = NSMakeSize(existingSize.height, existingSize.width); NSImage *rotatedImage = [[NSImage alloc] initWithSize:newSize]; NSAffineTransform *rotateTF = [NSAffineTransform transform]; NSPoint centerPoint = NSMakePoint(newSize.width / 2, newSize.height / 2); [rotateTF translateXBy: centerPoint.x yBy: centerPoint.y]; [rotateTF rotateByDegrees: (clockwise) ? - 90 : 90]; [rotateTF translateXBy: -centerPoint.y yBy: -centerPoint.x]; [rotateTF concat]; NSRect r1 = NSMakeRect(0, 0, newSize.height, newSize.width); [[existingImage bestRepresentationForDevice: nil] drawInRect: r1]; [rotatedImage unlockFocus]; return rotatedImage; } @end
EDIT:
Znalazlem rozwiazanie, ktore dziala. ALE problem jesli idzie o przekazywanie obiektow z/do metod jeszcze nierozwiazany.
Jesli ktos wie jak poprawic powyzszy kod bylbym wdzieczny bo rotacja obrazka miala byc tylko wstepem. Caly obrazek zostanie poddany powazniejszej obrobc ale dalej nie wiem jak go przekazywac...
Rozwiazanie to wstawic w linijki buttona:
Kod:NSSize imageSize = [sourceImage size]; NSImage* rotatedImage = [[NSImage alloc] initWithSize:imageSize]; NSPoint center = NSMakePoint(imageSize.width / 2.0, imageSize.height / 2.0); NSAffineTransform* transform = [NSAffineTransform transform]; [rotatedImage lockFocus]; [transform translateXBy:center.x yBy:center.y]; [transform rotateByDegrees:180.0]; [transform translateXBy:-center.x yBy:-center.y]; [transform concat]; [sourceImage drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0]; [rotatedImage unlockFocus];




LinkBack URL
About LinkBacks




