openGl ビューのサブクラスがあります。方法の 1 つで、背景を黒または白で描画するフラグを設定しました。メソッドの最後で setNeedsDisplay を呼び出します。これは決して呼び出されません!mouseDownEventにもsetNeedsDisplayがあります。ビューをクリックすると、IT は IT を呼び出します。背景の色が変わります。何か案は?これがコードです。
openGL ビューで
-(long)setBackgroundBlack:(BOOL)flag{
if(flag == YES){
blkBg = YES;
[self setNeedsDisplay:YES];
}else if (flag == NO){
blkBg = NO;
[self setNeedsDisplay:YES];
}
if (flag == blkBg){
return 0;
}else{
return 1;
}
}
- (void)mouseDown:(NSEvent *)theEvent
{
lastDragLocation = [[self superview] convertPoint:[theEvent locationInWindow] fromView:nil];
NSPoint newPoint;
newPoint.x = lastDragLocation.x * (2.0 / self.bounds.size.width) - 1.0;
newPoint.y = lastDragLocation.y * (2.0 / self.bounds.size.width) - 1.0;
[self setNeedsDisplay:YES];
}
アプリデリゲートで
-(IBAction)claim1931BW:(id)sender{
long res = [_myPlotView setBackgroundBlack:NO];
NSLog(@"%ld", res);
[self.cie1931BWMenu setState:NSOnState];
[self.cie1931ColorMenu setState:NSOffState];
}