2012-02-14 7 views
1

多くのカスタムビューを表示するスクロールビューがあります。NSScrollView内でカスタムビューを使用するとアーティファクトが発生する

私は独自のクラスを使用しているので、drawRectメソッドを使用してビューの一番下に線を描画できます。ここで

@interface MyListItemView : NSView 

のdrawRect

@implementation MyListItemView 

-(void)drawRect:(NSRect)rect 
{ 
    [NSGraphicsContext saveGraphicsState]; 

    NSBezierPath * path; 
    path = [NSBezierPath bezierPath]; 
    [path moveToPoint: rect.origin]; 
    [path lineToPoint: NSMakePoint(rect.size.width, 0)]; 

    [path setLineWidth:1]; 

    [[NSColor grayColor] set]; 
    [path stroke]; 

    [NSGraphicsContext restoreGraphicsState]; 
} 

@end 

の私の実装であると予想、これはラインを描くが、私はコンテナをスクロールすると下の画像の右側に示したように私はアーティファクトは、表示されてます:

Screen shot of artifact lines on my app

私は、グラフィックスコンテキストの保存と復元しようとしたが、これは何の違いを行っていないし、それはそのコのように見えていませんdeが必要です。私は何が欠けていますか?

答えて

1

インスピレーションは散歩中に私を襲った。

私は私の見解の端に線を描いています。それは、ビューの外に(おそらくアンチエイリアシングのために)描画されているものがあり、適切にクリーンアップされていないようです。半画素ではありません

[path moveToPoint: NSMakePoint(0, 0.5)]; 
[path lineToPoint: NSMakePoint(rect.size.width, 0.5)]; 
+0

を:

私が行うために必要なすべての

はこれに私のラインコードを変更し、半画素私のラインを上に移動しました。それは半分の点です。 – uchuugaka

関連する問題