我正在使用 Cocoa 为 Mac OS X 编写一个小型棋盘游戏。我实际的网格绘制如下:
- (void)drawRect:(NSRect)rect
{
for (int x=0; x < GRIDSIZE; x++) {
for (int y=0; y < GRIDSIZE; y++) {
float ix = x*cellWidth;
float iy = y*cellHeight;
NSColor *color = (x % 2 == y % 2) ? boardColors[0] : boardColors[1];
[color set];
NSRect r = NSMakeRect(ix, iy, cellWidth, cellHeight);
NSBezierPath *path = [NSBezierPath bezierPath];
[path appendBezierPathWithRect:r];
[path fill];
[path stroke];
}
}
}
这很好用,除了我看到瓷砖之间的颜色有一些错误。我想这是由于一些抗锯齿或类似的。请参阅下面的屏幕截图(希望您也可以看到相同的问题......瓷砖重叠的地方有一些黑线):
因此我有这些问题:
- 有什么方法可以删除这些图形伪影,同时仍然保持可调整大小/可缩放的板?
- 我是否应该使用其他一些图形库,如 Core Graphics 或 OpenGL?
更新:
const int GRIDSIZE = 16;
cellWidth = (frame.size.width / GRIDSIZE);
cellHeight = (frame.size.height / GRIDSIZE);