2012-02-14 24 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 2014-02-19 03:13:07

相關問題