我必须重新设计一些控件。NSButton 没有问题,但是当我按住鼠标并移动旋钮时,NSSlider 出现绘图错误。如果我释放鼠标,它会正确绘制。
这是绘图代码(我的类继承自 NSSlider):
- (void)drawRect:(NSRect)dirtyRect
{
//[super drawRect:dirtyRect];
CGContextRef c;
CGFloat y, r, p;
c = [[NSGraphicsContext currentContext] graphicsPort];
r = (dirtyRect.size.height*0.8)/2.0;
p = (dirtyRect.size.width-r*2) * ([self doubleValue]*0.01);
y = dirtyRect.size.height/2.0;
CGContextSetLineWidth(c, 2);
CGContextSetStrokeColorWithColor(c, [_fullLineColor CGColor]);
CGContextMoveToPoint(c, 0, y);
CGContextAddLineToPoint(c, dirtyRect.size.width, y);
CGContextStrokePath(c);
CGContextSetLineWidth(c, 5);
CGContextSetStrokeColorWithColor(c, [_valueLineColor CGColor]);
CGContextMoveToPoint(c, 0, y);
CGContextAddLineToPoint(c, p, y);
CGContextStrokePath(c);
CGContextSetFillColorWithColor(c, [_knobColor CGColor]);
CGContextFillEllipseInRect(c, CGRectMake(p, y-r, r*2, r*2));
}
我能做些什么来避免这种行为?