2010-07-02 2 views
3

Я использую следующий код и рисует треугольник на экране. Но по какой-то причине он отображает нижний треугольник.Почему мой треугольник Core Graphics перевернут, когда я его рисую?

Вот код:

// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect { 
    // Drawing code 

    CGMutablePathRef path = CGPathCreateMutable(); 
    CGPathMoveToPoint(path,NULL,10.0f, 100.0f); 
    CGPathAddLineToPoint(path,NULL,100.0f,10.0f); 
    CGPathAddLineToPoint(path,NULL,100.0f,100.0f); 
    CGPathAddLineToPoint(path,NULL,100.0f,100.0f); 
    CGPathCloseSubpath(path); 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(ctx, [UIColor blueColor].CGColor); 
    CGContextAddPath(ctx, path); 
    CGContextFillPath(ctx); 


} 

и вот результат:

 /| 
    /| 
    /| 
/ | 
/ | 
/__ __| 

Но когда я рисую на бумаге я пришел к этой схеме:

___________ 
    \   | 
    \  | 
    \  | 
     \  | 
     \\  | 
      \ 
      \| 

(у вас есть идея)

Что мне не хватает! Может быть, я не думаю прямо. x является горизонтальным, а y - вертикальным. (0,0) является правым началом.

ответ

2

Ось Y перевернута в контексте, в который вы рисуете. Вы можете настроить для этого в вашей математике или применить аффинное преобразование, чтобы перевернуть его обратно

+0

Как я могу это сделать? – azamsharp

+0

CGAffineTransform flipVertical = CGAffineTransformMake (1, 0, 0, -1, 0, self.bounds.size.height); CGContextConcatCTM (ctx, flipVertical); –

+0

Спасибо, миллион! Я полный новичок в IPhone, поэтому спасибо, что помогли мне! – azamsharp

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