我正在绘制一个由很多线条组成的大方案。我drawRect:
用UIView
. 该方案大于视图层,我检查每条线并仅在它与可见矩形相交时绘制它。但有一刻我想,我应该这样做吗?也许 Quartz 已经在做这个测试了?
所以问题是:当我使用函数时CGContextAddLineToPoint()
,Core Graphics
测试这条线是否与图层矩形相交,或者它只是绘制它?
我正在绘制一个由很多线条组成的大方案。我drawRect:
用UIView
. 该方案大于视图层,我检查每条线并仅在它与可见矩形相交时绘制它。但有一刻我想,我应该这样做吗?也许 Quartz 已经在做这个测试了?
所以问题是:当我使用函数时CGContextAddLineToPoint()
,Core Graphics
测试这条线是否与图层矩形相交,或者它只是绘制它?
当我使用函数时
CGContextAddLineToPoint()
,Core Graphics 会测试这条线是否与图层 rect 相交,或者它只是绘制它?
不,它不会抑制lineto
,因为这只是子路径中的一个段。子路径可能与矩形相交,即使其线段之一不相交。您可能只为每个子路径绘制一条线,但 Quartz 直到您moveto
创建新的子路径时才知道这一点。
至于你是否应该测试直线的交点,文档说:
实现
drawRect:
方法的视图应始终检查传递给该方法的矩形,并使用它来限制其绘图操作的范围。因为绘图是一项相对昂贵的操作,所以以这种方式限制绘图是提高性能的好方法。
我认为我们可以合理地解释这意味着您确实应该检查线条是否与矩形相交并跳过那些不相交的线。