2012-07-01 24 views

risposta

1

Questo non è esattamente quello che hai chiesto, ma potrebbe essere migliore se si desidera solo per visualizzare l'immagine con un bordo (piuttosto che in realtà disegnando un confine su di esso) ...

È possibile utilizzare CALayer aggiungere bordi (e gli angoli arrotondati, ombre, ecc) a qualsiasi UIView ...

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

È inoltre necessario #import <QuartzCore/QuartzCore.h> e collegamento al quadro QuartzCore per far funzionare tutto.

+0

Grazie jhabbott ma non mi aiuta. Sto provando a modificare l'immagine, non solo a visualizzare un bordo nella parte superiore. – frimoldi

2

Abbiamo bisogno di avere l'estensione CIImage o il CGRect in cui vogliamo creare il bordo solido. Quindi, possiamo disegnare una Matrice CII formando una linea continua nell'area specificata e ripetere i passaggi per altre 3 volte per posizioni diverse per disegnare un rettangolo pieno completo. Di seguito è riportato il pezzo di codice che disegnerà una linea continua dritta sopra l'area specificata.

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]; 

Ho mantenuto la larghezza per 5 pixel. topLeft, topRight .... sono i rispettivi CGPoint per la posizione. Per un rettangolo completo avrai anche bisogno di bottomLeft e bottomRight.

Overlay è l'originale CIImage.

+0

Non sei sicuro del motivo per cui hai bisogno della trasformazione prospettica. Perché non solo ritagliare la linea, come un rettangolo con larghezza 5, 4 volte. – user1055568