Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSBezierPath仅绘制星形的边框_Ios_Objective C_Macos_Cocoa - Fatal编程技术网

Ios 使用NSBezierPath仅绘制星形的边框

Ios 使用NSBezierPath仅绘制星形的边框,ios,objective-c,macos,cocoa,Ios,Objective C,Macos,Cocoa,使用NSBezierPath仅使用外表面绘制星形。下面的代码是绘制与所有直线相交的星形 - (NSBezierPath *) getPathForStar{ CGRect rect =self.frame; NSBezierPath * path = [NSBezierPath bezierPath]; [path setLineWidth:2.0]; CGFloat xCenter = rect.size.width / 2; CGFloat yCe

使用
NSBezierPath
仅使用外表面绘制星形。下面的代码是绘制与所有直线相交的星形

- (NSBezierPath *) getPathForStar{

    CGRect rect =self.frame;
    NSBezierPath * path = [NSBezierPath bezierPath];

    [path setLineWidth:2.0];
    CGFloat xCenter = rect.size.width / 2;
    CGFloat yCenter = rect.size.height / 2;

    float width;
    if(rect.size.width > rect.size.height) {
        width = rect.size.height;
    } else {
        width = rect.size.width;
    }
    double r = width / 2.0;
    float flip = -1.0;

    double theta = 2.0 * M_PI * (2.0 / 5.0); // 144 degrees

    [path moveToPoint:CGPointMake(xCenter, r*flip+yCenter)];

    for (NSUInteger k=1; k<5; k++)
    {
        float x = r * sin(k * theta);
        float y = r * cos(k * theta);
        [path lineToPoint:CGPointMake( x+xCenter, y*flip+yCenter)];
    }

     return path;
}
-(NSBezierPath*)getPathForStar{
CGRect rect=self.frame;
NSBezierPath*路径=[NSBezierPath bezierPath];
[路径设置线宽:2.0];
CGFloat xCenter=rect.size.width/2;
cGycenter=rect.size.height/2;
浮动宽度;
if(rect.size.width>rect.size.height){
宽度=矩形尺寸高度;
}否则{
宽度=rect.size.width;
}
双r=宽度/2.0;
浮动翻转=-1.0;
双θ=2.0*M_π*(2.0/5.0);//144度
[路径移动点:CGPointMake(xCenter,r*flip+yCenter)];

对于(nsu整数k=1;k?如何调试错误?
for(nsu整数k=1;k)您当前正在绘制路径吗?此代码仅创建路径。代码的哪部分不清楚?如果有5个调用-lineToPoint:,那么您将有5条线。如果您希望绘制5点星的边界,则需要绘制10条线(每个点段2个)。数学不明白吗?我目前使用NSBezierPath笔划方法绘制星形。如何调试错误?
(nsu整数k=1;kHow您当前正在绘制路径吗?此代码仅创建路径。代码的哪部分不清楚?如果有5个对-lineToPoint:的调用,那么您将有5条线。如果您希望绘制一个5点星形的边框,则需要绘制10条线(每个点线段2条).数学难道不明白吗?我现在用的是NSBezierPath笔划法来画星星。