ios - drawRect - 绘制星形

标签 ios drawing core-graphics

我正在 View 上绘制注释。我用来绘制星星的方法如下。

-(void)drawRect:(CGRect)rect {

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 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

CGContextMoveToPoint(context, xCenter, r*flip+yCenter);

for (NSUInteger k=1; k<5; k++)
{
    float x = r * sin(k * theta);
    float y = r * cos(k * theta);
    CGContextAddLineToPoint(context, x+xCenter, y*flip+yCenter);
}

CGContextSetStrokeColorWithColor(context, self.color.CGColor);

CGContextClosePath(context);
CGContextStrokePath(context);

}

我只想有星形边框,删除其他内线,有什么办法可以实现这一点吗? (除了使用 moveToPoint 和 addLine 方法)

最佳答案

使用此代码:

-(void)drawRect:(CGRect)rect
{
    int aSize = 100.0;
    float color[4] = { 0.0, 0.0, 1.0, 1.0 }; // Blue
    CGColorRef aColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), color);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, aSize);
    CGFloat xCenter = 100.0;
    CGFloat yCenter = 100.0;

    float  w = 100.0;
    double r = w / 2.0;
    float flip = -1.0;

    CGContextSetFillColorWithColor(context, aColor);


    CGContextSetStrokeColorWithColor(context, aColor);

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

    CGContextMoveToPoint(context, xCenter, r*flip+yCenter);

    for (NSUInteger k=1; k<5; k++) 
    {
        float x = r * sin(k * theta);
        float y = r * cos(k * theta);
        CGContextAddLineToPoint(context, x+xCenter, y*flip+yCenter);
    }

    CGContextClosePath(context);
    CGContextFillPath(context);
    }

这将创建 1 颗蓝色星星

关于ios - drawRect - 绘制星形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268079/

相关文章:

java - PlayN - iOS 和 Android 上的虚拟键盘

algorithm - 以离散步骤绘制弧线

iphone - 用轮廓填充圆圈

ios - 替换已弃用代码 : CGContextShowText

iOS 视野宽度计算不正确

ios - NSUnknownKeyException ios Objective-C

cocoa - 在 NSView-drawRect : method? 中画线的首选/推荐方法是什么

swift - 在绘图应用程序swift中合并 ImageView

ios - 重命名 Xcode 6 项目 : "linker command failed with exit code 1 (use -v to see invocation)" 后出错

java - 如何在 android 中录制视频的同时绘制视频,并保存视频和绘图?