我目前有一个NSView绘制网格图案(基本上是水平和垂直线的指南)的想法是用户可以更改网格的间距和网格的颜色。
网格的目的是在排列对象时充当用户的指南。除了一个例外,一切都很好。当我NSWindow通过拖动调整大小手柄调整大小时,如果我的网格间距特别小(比如 10 像素)。拖动调整大小本质上变得昏昏欲睡。
我drawRect的网格代码如下:
-(void)drawRect:(NSRect)dirtyRect {
    NSRect thisViewSize = [self bounds];
    // Set the line color
    [[NSColor colorWithDeviceRed:0 
                           green:(255/255.0) 
                            blue:(255/255.0) 
                           alpha:1] set];
    // Draw the vertical lines first
    NSBezierPath * verticalLinePath = [NSBezierPath bezierPath];
    int gridWidth = thisViewSize.size.width;
    int gridHeight = thisViewSize.size.height;
    int i;
    while (i < gridWidth)
    {
        i = i + [self currentSpacing];
        NSPoint startPoint = {i,0};
        NSPoint endPoint = {i, gridHeight};
        [verticalLinePath setLineWidth:1];
        [verticalLinePath moveToPoint:startPoint];
        [verticalLinePath lineToPoint:endPoint];
        [verticalLinePath stroke];
    }
    // Draw the horizontal lines
    NSBezierPath * horizontalLinePath = [NSBezierPath bezierPath];
    i = 0;
    while (i < gridHeight)
    {
        i = i + [self currentSpacing];
        NSPoint startPoint = {0,i};
        NSPoint endPoint = {gridWidth, i};
        [horizontalLinePath setLineWidth:1];
        [horizontalLinePath moveToPoint:startPoint];
        [horizontalLinePath lineToPoint:endPoint];
        [horizontalLinePath stroke];
    }
}
我怀疑这完全与我绘制网格的方式有关,并且我愿意接受有关如何更好地处理它的建议。
我可以看到效率低下的地方,拖动调整大小在调整大小时NSWindow不断调用drawRect此视图中的 ,并且网格越接近,父窗口的每个像素拖动的计算越多。
我正在考虑在调整窗口大小时隐藏视图,但感觉不那么动态。我希望用户体验非常流畅,没有任何明显的延迟或闪烁。
有没有人对绘制网格的更好或更有效的方法有任何想法?
一如既往,非常感谢所有帮助。