2012-04-26 9 views
2

Я хочу заполнить путь красным. Это мой код:Заполнение пути определенным цветом

CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f}; 
CGContextBeginPath(c); 
CGContextSetStrokeColor(c, red); 
CGContextSetFillColorWithColor(c, [UIColor whiteColor].CGColor); 
CGContextMoveToPoint(c, 10, 10); 
CGContextAddLineToPoint(c, 20, 20); 
CGContextAddLineToPoint(c, 20, 40); 
CGContextAddLineToPoint(c, 40, 20); 
CGContextAddLineToPoint(c, 10, 10); 
CGContextStrokePath(c); 
CGContextFillPath(c); 

Я знаю, что я должен использовать CGContextSetFillColor() и CGContextFillPath(), но это не работает.

Как я могу сделать это правильно?

+0

Можете ли вы предоставить код, который вы используете, чтобы попытаться заполнить дорожка? –

+0

@craig конечно, я редактирую первый пост –

+0

решён. ответ в первом посте. –

ответ

3

Ответ в моем случае:

CGContextRef context = UIGraphicsGetCurrentContext(); 

//set fill pattern 
UIColor *patternRed = [UIColor colorWithPatternImage:[UIImage imageNamed:@"patternRed.png"]]; 

CGContextSetLineWidth(context, 1.0); 
CGContextSetFillColorWithColor(context, patternRed.CGColor); 

CGMutablePathRef pathRef = CGPathCreateMutable(); 

CGPathMoveToPoint(pathRef, NULL, 0, self.frame.size.height); 
for (int i = 0; i<255; ++i) { 
    CGPathAddLineToPoint(pathRef, NULL, stepX*arrayX[i], self.frame.size.height - (arrayYRed[i]*stepY)); 
} 
CGPathAddLineToPoint(pathRef, NULL, stepX*255, self.frame.size.height); 
CGContextAddPath(context, pathRef); 
CGContextFillPath(context); 

CGPathRelease(pathRef); 
0

Вы не устанавливаете ширину линии в приведенном выше примере, поэтому здесь приведен пример, который приведет линию вниз по левой стороне прямоугольника. Взятые непосредственно из функции DrawRect

CGContextRef context = UIGraphicsGetCurrentContext(); 
[[UIColor whiteColor] setFill]; 
CGContextFillRect(context, rect); 

CGContextSetLineWidth(context, 2); 
CGFloat gray[4] = {0.5f, 0.5f, 0.5f, 1.0f}; 
CGContextSetStrokeColor(context, gray); 

// left 
CGContextMoveToPoint(context, 0, 0); 
CGContextAddLineToPoint(context, 0, CGRectGetHeight(rect)); 

CGContextStrokePath(context); 
1

Для быстрого использования:

CGContextSetFillColorWithColor(context, UIColor.blackColor().CGColor) 
CGContextFillPath(context) 
+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – gunr2171

+0

Я думал, что вопрос требует правильного метода изменения цвета заливки, так что это две простые строки кода (кстати, довольно понятные объяснения)? Что мне нужно объяснить? – ergunkocak

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