2012-07-01 24 views

Odpowiedz

1

To nie jest dokładnie to, o co prosiłeś o, ale może być lepiej, jeśli chcesz tylko do wyświetlania obrazu z obramowaniem (zamiast faktycznie rysunek obramowanie na nią) ...

Można użyć CALayer dodać granice (i zaokrąglone narożniki, cienie, itd) do każdej UIView ...

// imgView is an instance of UIImageView, but this works with any UIView 
imgView.layer.borderWidth = 2.0f; 
imgView.layer.borderColor = [[UIColor blackColor] CGColor]; 

Należy również #import <QuartzCore/QuartzCore.h> oraz link do ram QuartzCore to zadziałało.

+0

Dziękuję jhabbott, ale to mi nie pomaga. Próbuję zmodyfikować obraz, a nie tylko wyświetlić ramkę na górze. – frimoldi

2

Musimy mieć zasięg CIImage lub CGRect, w którym chcemy stworzyć solidną granicę. Następnie możemy narysować CIImage tworzący linię ciągłą w określonym obszarze i powtórzyć kroki jeszcze 3 razy dla różnych pozycji, aby narysować pełny, pełny prostokąt. Poniżej znajduje się fragment kodu, który narysuje prostą linię powyżej określonego obszaru.

CIImage *overlay1 = [CIImage imageWithColor:[CIColor colorWithRed:255/255.f green:0/255.f blue:0/255.f alpha:1.00f]]; 
    overlay1 = [overlay1 imageByCroppingToRect:image.extent]; 
    overlay1 = [overlay1 imageByApplyingFilter:@"CIPerspectiveTransformWithExtent" withInputParameters:@{@"inputExtent":[CIVector vectorWithCGRect:image.extent],@"inputTopLeft":[CIVector vectorWithCGPoint:CGPointMake(topLeft.x - 5, topLeft.y + 5)],@"inputTopRight":[CIVector vectorWithCGPoint:CGPointMake(topRight.x + 5, topRight.y + 5)],@"inputBottomLeft":[CIVector vectorWithCGPoint:CGPointMake(topLeft.x - 5, topLeft.y)],@"inputBottomRight":[CIVector vectorWithCGPoint:CGPointMake(topRight.x + 5, topRight.y) ]}]; 
    overlay = [ overlay1 imageByCompositingOverImage:overlay]; 

Zachowałem szerokość 5 pikseli. topLeft, topRight .... to odpowiedni punkt CG dla pozycji. Dla pełnego prostokąta będziesz potrzebował także bottomLeft i bottomRight.

Nakładka to oryginalna kamera CII.

+0

Nie wiem, dlaczego potrzebna jest transformacja perspektywy. Dlaczego nie wystarczy przyciąć do linii, jako prostokąt o szerokości 5, 4 razy. – user1055568