2013-06-16 1 views
1

CG를 사용하여 그려지는 사각형의 너비와 색상을 변경하려고합니다. 다음 함수에서는 이미지를 다른 색상으로 마스킹하지만 너비를 어떻게 변경합니까?이미지 색상을 변경하면서 CGContext의 선폭을 변경 하시겠습니까?

- (void)colorImage:(UIImage *)origImage withColor:(UIColor *)color withWidth:(float) width 
{ 
UIImage *image = origImage; 
NSLog(@"%f", width); 
CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height); 
UIGraphicsBeginImageContext(rect.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, width); 
CGContextClipToMask(context, rect, image.CGImage); 
CGContextSetFillColorWithColor(context, [color CGColor]); 
CGContextFillRect(context, rect); 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIImage *flippedImage = [UIImage imageWithCGImage:img.CGImage 
              scale:1.0 orientation:   UIImageOrientationDownMirrored]; 

self.image = flippedImage; 
} 

답변

8

CGContextSetLineWidth(context, width)으로 선 너비를 설정합니다.

아무 효과가없는 이유는 아무 것도 쓰지 않기 때문입니다. 선 너비는 선을 그리면서 그린 선에 적용됩니다. 당신은 쓰다듬어 쓰지 않고 채우고 있고, 채우기에는 너비를 줄 줄이 없다.

사각형 주위에 테두리를 넣으려면 테두리를 그릴 필요가 있습니다. 그것이 어떤 모양의 둘레에 줄을 그리는 것입니다. 다음 CGContextStrokeRect

  • 전화 CGContextSetLineWidth :

    당신은 세 가지 옵션이 있습니다.

  • CGContextStrokeRectWithWidth으로 전화하십시오.
  • CGContextSetLineWidth을 호출 한 다음 CGContextAddRect (현재 경로에 사각형을 추가하려면) CGContextDrawPathkCGPathFillStroke으로 지정하십시오. (당신이 선호하는-가있는 경우 또는 SetLineWidth 전에 AddRect 전화 만 DrawPath 전에 두 일을해야합니다.) 뇌졸중이 경로 윤곽을 중심으로되어

주, 그래서 그것의 반이 경로/사각형 반 안에있을 것입니다 그것은 밖에있을 것입니다. 선의 너비가 1 픽셀이면 반투명 한 선으로 표시됩니다 ('반 화소'로 표현할 수있는 다른 방법이 없으므로). 선의 픽셀 수가 짝수 픽셀이고 컨텍스트 (또는 뷰)의 전체 경계를 칠 경우 내부에있는 선의 절반 만 볼 수 있습니다.

당신이 정말로 채우기위한 것인지 아니면 뇌졸중만으로 원하는 것인지 결정해야합니다.

관련 문제