Есть ли пользовательский элемент управления, похожий на NSLevelIndicator с обратным окрашиванием?
Мне нужен контроль, похожий на NSLevelIndicator
в NSContinuousCapacityLevelIndicatorStyle
, но с обратной окраской. С NSLevelIndicator
цвета выглядят следующим образом: зеленый до уровня предупреждения, желтый от предупреждения до критического уровня, красный от критического уровня и далее. Это хорошо для, скажем, регулятора громкости. Но у меня есть значение, которое соответствует заполнению бензобака: я хочу зеленый для полного бака, желтый для предупреждения и красный для пустого. Я не нашел никаких средств, чтобы изменить цвета NSLevelIndicator
,
Итак, прежде чем я начну писать свой собственный элемент управления, есть ли NSControl
доступно где-то, что уже делает то, что я хочу (конечно, я погуглил, прежде чем спрашивать, но безрезультатно)?
Спасибо за прочтение.
2 ответа
NSLevelIndicator
(по крайней мере, в настоящее время) делает это автоматически для вас, если вы установите уровень предупреждения выше критического уровня!
Подкласс NSLevelIndicator
и написать свой - (void)drawRect:(NSRect)theRect
#import <Cocoa/Cocoa.h>
@interface PBLevelIndicator : NSLevelIndicator {
unsigned int mPercent;
}
@end
#import "PBLevelIndicator.h"
@implementation PBLevelIndicator
- (void)drawRect:(NSRect)theRect
{
NSRect fillingRect = theRect;
fillingRect.size.width = theRect.size.width*mPercent/100;
NSColor *indicatorColor;
if( mPercent >= 99 )
{
indicatorColor = [NSColor greenColor];
}
else if (mPercent >50)
{
indicatorColor = [NSColor yellowColor];
}
else
{
indicatorColor = [NSColor redColor];
}
[indicatorColor set];
NSRectFill(fillingRect);
}
-(void) setPercentage:(unsigned int) inPercent
{
mPercent = inPercent;
[self setNeedsDisplay:YES];
}
@end