菜鸟教程小白 发表于 2022-12-13 13:20:57

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&lt;=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]
查看完整版本: ios - Objective C UIBezierPath 路径关闭问题