2010-10-12 102 views
2

我在繪製一個像素寬線時遇到了問題。所有線條都是完全水平或垂直的(我沒有繪製對角線),但它們不能清晰地畫出。它看起來像是在縮小的alpha處繪製兩個像素。毫無疑問,由於抗鋸齒。我搜索了文檔和論壇,並且遇到了一個聲明,說「有一個像素寬的水平和垂直線沒有問題...」,但我不知道具體如何。任何指針都會受到歡迎。如何在Quartz中繪製一個像素寬的水平和垂直線?

繪圖代碼很簡單:

else if ([[value entity].name isEqualToString:@"RTLine"]) { 

CGContextSetRGBStrokeColor(ctx, 0, 0, 0, 1); 
CGContextSetLineWidth(ctx, [[value valueForKey:@"thickness"] doubleValue]); 
CGContextMoveToPoint(ctx, [[value valueForKey:@"beginDrawLocationX"] doubleValue], 
          [[value valueForKey:@"beginDrawLocationY"] doubleValue]); 
CGContextAddLineToPoint(ctx, [[value valueForKey:@"endDrawLocationX"] doubleValue], 
           [[value valueForKey:@"endDrawLocationY"] doubleValue]); 
CGContextStrokePath(ctx); 

} 

在上文中,「厚度」是等於1。我用的doubleValue代替的floatValue轉換從在殼體浮動INT被狗拉雪橇的值的東西不太1 - 事實並非如此。

回答

3

我的不好。只要我發佈這個,我在CGContext參考指南中找到了答案。我所要做的就是增加一行:

CGContextSetShouldAnitalias(ctx, 0); 

和賓果!一切都在和平......

+0

+1自我回答很好。您也可以「接受」您自己的答案,將此問題標記爲已回答。 – msw 2010-10-12 13:49:10