ios - Objective C UIBezierPath 路径关闭问题
<p><p>我尝试使用六边形,但在关闭路径中遇到了一些问题。</p>
<p>这是我的六边形,关闭的路径并不顺畅。
<a href="/image/t5hlI.png" rel="noreferrer noopener nofollow"><img src="/image/t5hlI.png" alt="enter image description here"/></a> </p>
<p>这是我的绘图代码</p>
<pre><code> CAShapeLayer* shapeLayer = ;
UIBezierPath* path = ;
//;
//;
;
//CGFloat dashes[] = {6, 2};
//;
//;
CGFloat radians = 100.0;
NSInteger num = 6;
CGFloat interval = 2*M_PI/num;
NSInteger initX = radians*cosf(interval);
NSInteger initY = radians*sinf(interval);
;
for(int i=1; i<=num; i++){
CGFloat x = radians*cosf(i*interval);
CGFloat y = radians*sinf(i*interval);
;
}
;
shapeLayer.path = ;
shapeLayer.strokeColor = [ CGColor];
shapeLayer.fillColor = [ CGColor];
shapeLayer.lineWidth = 4.0f;
</code></pre>
<p>我也尝试使用以下不同的选项,但没有运气</p>
<pre><code>;
;
;
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>问题在于,您在制作第一个点(您移动到的点)的方式与您制作其他点(您移动到的点)的方式不同。</p>
<pre><code>NSInteger initX = radians*cosf(interval);
NSInteger initY = radians*sinf(interval);
[path moveToPoint:CGPointMake(
location.x - semiWidth + initX, location.y - semiHeight + initY)];
</code></pre>
<p>相反,使第一点与其他点完全平行:</p>
<pre><code>CGFloat x = radians*cosf(0*interval);
CGFloat y = radians*sinf(0*interval);
[path moveToPoint:CGPointMake(
location.x - semiWidth + x, location.y - semiHeight + y)];
</code></pre>
<p>这与您稍后将使用 <code>i*interval</code> 执行的操作完全相同,为了强调并行性,我将 <code>0</code> 写为 <code>0*间隔</code>。这是我最终得到的结果:</p>
<p> <a href="/image/xyIlx.png" rel="noreferrer noopener nofollow"><img src="/image/xyIlx.png" alt="enter image description here"/></a> </p></p>
<p style="font-size: 20px;">关于ios - Objective C UIBezierPath 路径关闭问题,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/36783559/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/36783559/
</a>
</p>
页:
[1]