1

私はTableViewで透明なハイライト色をかなり簡単に描画しようとしています:

if ([self isSelected]){
    self.alphaValue = 0.5f;
    NSColor * fillColor = [NSColor colorWithCalibratedRed: 100.0f/256.0f 
                                                    green: 100.0f/256.0f 
                                                     blue: 100.0f/256.0f 
                                                    alpha: 0.5];


    [fillColor drawSwatchInRect:dirtyRect];

}

ただし、元の色と新しいアルファ色の間に斜めの線が描かれています。解決策はおそらく非常に単純なものであることは知っていますが、それが何であるかを理解できないようです。何か案は?

4

1 に答える 1

2

これはまさにそのdrawSwatchInRect:ために設計されたものだと思います。アルファ値がある場合、スウォッチは、黒 (左上) と白 (右下) を合成したときに色がどのように見えるかを示します。Apple UI コンポーネントが色を表示する場所はどこでも、これを行います。使用している色が灰色でない場合は、より明白です。

さまざまな不透明度の色見本

長方形を特定の色で塗りつぶし、背景が透けて見えるようにする場合は、次のようにします。

[fillColor set];
NSBezierPath *rectPath = [NSBezierPath bezierPathWithRect:dirtyRect];
[rectPath fill];

これは塗りつぶされた四角形で機能しますdirtyRectが、常に同じ形状ではないことに注意してください。ほとんどの描画では、描画boundsされるビューの を使用します。

于 2012-04-26T01:53:13.010 に答える