2013-04-05 1 views
1

У меня есть некоторый прямоугольник на мой взгляд, и я хочу нарисовать фигуру в этом прямоугольнике с UIBezierPath.Как нарисовать прямо с безьевой дорожкой?

Я думал, что метод

UIBezierPath myBezierPath = [UIBezierPath bezierPathWithRect:myRect]; 

сделает пустой UIBezierPath под названием myBezierPath, с границами, что myRect дает ему, и тогда я могу «нарисовать» это, что myBezierPath используя moveToPoint и addLineToPoint. Но этот код сделал квадрат (я делаю так, что путь, такой поглаженный) с границами, которые были в myRect. Но я не хочу, чтобы он был виден. Я хочу этого, если я попробую это:

NSLog(@"myBezierPath rect size %f,%f",myBezierPath.bounds.size.width,myBezierPath.bounds.size.height); 

Он возвращает мне ширину и высоту, которые имеет myRect. И поэтому я могу использовать его в методе moveToPoint и методе addLine. Например, например:

[myBezierPath addLineToPoint: CGPointMake(suit.bounds.size.width/2, 0)]; 

Спасибо.

Мой вопрос: «Как я могу сделать в прямоугольнику, используя путь Безье?»

Я сделал это с помощью метода, здесь myRect имеют происхождение, что размещать CGRect с myBezierPath в центре поля зрения.

myBezierPath = [UIBezierPath bezierPathWithRoundedRect:myRect cornerRadius:20.0]; 

Example 1 http://i.minus.com/iguFjeqZQrsb6.png

Как сделал аналогичный (поместить мой другой рисунок в центр с происхождения)? Теперь у меня есть это:

Example 2 http://i.minus.com/ifVY9UAP7hVv3.png

+0

Что вопрос? Вы уже решили проблему. Чтобы построить путь, постройте его; не используйте 'bezierPathWithRect', так как это создает прямоугольный путь, который вам не нужен. – matt

+0

Здесь нет актуального вопроса. Все это говорит о том, что вы что-то подумали и обнаружили (правильно), что вы ошибаетесь. (Чтение документов могло бы помешать этому.) Это здорово, но нет никаких сомнений. – matt

+0

@matt мой вопрос в том, как я могу делать то, что хочу, если вы этого не понимаете. Я не могу найти способ в документах и ​​в Интернете. Я обновляю свой вопрос. –

ответ

2

Пример (вам потребуется UIImageView в интерфейсе):

CGRect r = self.myImageView.bounds; 
UIGraphicsBeginImageContextWithOptions(r.size, NO, 0); 
UIBezierPath* p = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(r,10,10) cornerRadius:10]; 
[p stroke]; 
CGPoint c = CGPointMake(r.size.width/2.0, r.size.height/2.0); 
p = [UIBezierPath bezierPath]; 
[p moveToPoint:CGPointMake(c.x-30, c.y)]; 
[p addLineToPoint:CGPointMake(c.x, c.y-30)]; 
[p addLineToPoint:CGPointMake(c.x+30, c.y)]; 
[p addLineToPoint:CGPointMake(c.x, c.y+30)]; 
[p closePath]; 
[p fill]; 
self.myImageView.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

enter image description here

+0

Я сделал то, что хочу, теперь я понимаю, почему вы не можете понять мой вопрос :). Нет никакого способа сделать это, как я думал вообще, но я был уверен, что это так. Я сделал это просто добавить к 'CGPointMake()' мое рассчитанное происхождение. Спасибо, матовый. –

 Смежные вопросы

  • Нет связанных вопросов^_^