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笔划法来画星星。