2

と同様のコントロールが必要ですが、NSLevelIndicatorNSContinuousCapacityLevelIndicatorStyleが逆になっています。のNSLevelIndicator場合、色は次のようになります。警告レベルまでは緑、警告レベルから危険レベルまでは黄色、危険レベル以降は赤です。これは、たとえば、ボリューム コントロールには問題ありません。しかし、私はガソリンタンクの充填に対応する値を持っています: 満タンのタンクには緑、警告には黄色、空には赤が必要です。の色を変更する手段が見つかりませんでしたNSLevelIndicator

それで、私が独自のカスタムコントロールを書き始める前に、NSControl私が望むことをすでに行っている利用可能な場所はありますか(もちろん、尋ねる前にグーグルで検索しましたが、役に立ちませんでした)

読んでくれてありがとう。

4

2 に答える 2

1

サブクラス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
于 2013-02-06T11:25:04.400 に答える
1

NSLevelIndicator(少なくとも最近では)危険レベルよりも高い警告レベルを設定すると、これが自動的に行われます!

于 2016-09-02T06:44:02.000 に答える