我目前有一个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
此视图中的 ,并且网格越接近,父窗口的每个像素拖动的计算越多。
我正在考虑在调整窗口大小时隐藏视图,但感觉不那么动态。我希望用户体验非常流畅,没有任何明显的延迟或闪烁。
有没有人对绘制网格的更好或更有效的方法有任何想法?
一如既往,非常感谢所有帮助。