ちょっと必要だったので作りました。
CoreGraphi
1 void PDPathAddCrossSign(CGMutableP athRef path, CGRect rect, CGFloat thickness) 2 { 3 CGFloat diff = rect.size. width - rect.size. height; 4 rect = CGRectDefl ateRect(rect, MAX(0, diff/2), MAX(0, -diff/2)); 5 CGFloat radius = rect.size. width/2; 6 CGFloat d = sqrt(2)*thickness/ 2; 7 CGFloat cx = CGRectGetM idX(rect), cy = CGRectGetM idY(rect); 8 CGAffineTr ansform transform = CGAffineTr ansformMak eTranslati on(cx, cy); 9 CGPathMove ToPoint(path, &transform, d, 0); 10 for(int i = 0; i < 4; ++i){ 11 CGPathAddL ineToPoint (path, &transform, radius, radius - d); 12 CGPathAddL ineToPoint (path, &transform, radius - d, radius); 13 CGPathAddL ineToPoint (path, &transform, 0, d); 14 transform = CGAffineTr ansformRot ate(transform, M_PI/2.0f); 15 } 16 CGPathClos eSubpath(path); 17 }
中で呼び出してるCGRectDefl
1 CGRect CGRectInflateRect(CGRect rect, CGFloat width, CGFloat height) 2 { 3 rect.origi n.x -= width; 4 rect.origi n.y -= height; 5 rect.size. width += width*2; 6 rect.size. height += height*2; 7 return rect; 8 } 9 10 CGRect CGRectDefl ateRect(CGRect rect, CGFloat width, CGFloat height) 11 { 12 return CGRectInfl ateRect(rect, -width, -height); 13 }
これを使う事で、任意の大きさ、太さ、色で×印を描画できます。
posted by
genki
on Wed 4 Mar 2009
at 00:12