Я пытаюсь нарисовать круг для моего приложения Mac. Кодекс:CGContextRef not drawing
- (void)mouseMoved:(NSEvent*)theEvent {
NSPoint thePoint = [[self.window contentView] convertPoint:[theEvent locationInWindow] fromView:nil];
NSLog(@"mouse moved: %f % %f",thePoint.x, thePoint.y);
CGRect circleRect = CGRectMake(thePoint.x, thePoint.y, 20, 20);
CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];
CGContextSetRGBFillColor(context, 0, 0, 255, 1.0);
CGContextSetRGBStrokeColor(context, 0, 0, 255, 0.5);
CGContextFillEllipseInRect(context, CGRectMake(circleRect.origin.x, circleRect.origin.y, 25, 25));
CGContextStrokeEllipseInRect(context, circleRect);
[self needsDisplay];
}
- (void)mouseMoved:
называется отлично, и я могу видеть правильные координаты х и у в NSLog. Но я не получаю никаких кругов ... на удивление: если я сводит к минимуму мое приложение и снова его открываю (так он «обновляет» NSView) круги отлично нарисованы!
Хорошо, я сейчас с помощью NSGraphicsContext, который на самом деле является дружественным. Вызывая [self setNeedsDisplay: YES], круг не появляется вообще ... Даже не минимизируя и не открывая. Без [self setNeedsDisplay: YES] Я получаю круги после минимизации и повторного открытия :( –
Я обновил ответ. Используйте пример кода, должен работать как шарм. Каждый раз, когда вы сталкиваетесь с некоторыми проблемами в методе рисования, я бы рекомендуем «начинать с нуля»: нарисуйте что-нибудь, только что-нибудь. Затем проверьте свои методы обновления, код обновления кода (действительно ли вы назначаете переменную? назначаете ли вы локальные переменные или члены?), обновляет представления. найти источник проблемы. – Gobra
Точно то, что я пытался сделать = D Большое спасибо! –