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);