iPhone 如何剪辑新月图案
Posted
技术标签:
【中文标题】iPhone 如何剪辑新月图案【英文标题】:iPhone How to clip crescent moon pattern 【发布时间】:2011-12-12 14:05:59 【问题描述】:在堆栈溢出的帮助下,我开始熟悉 iPhone 中的石英绘图。我想制作剪辑新月图案的代码,这是我到目前为止所拥有的,但它并没有像我预期的那样工作:
contextRef = UIGraphicsGetCurrentContext();
CGContextSaveGState(contextRef);
onlyDrawTopHalf = YES;
halfMultiplier = onlyDrawTopHalf ? -1.0 : 1.0;
ellipse = CGRectMake(50, 50, 128, 128);
clipRect = CGRectOffset(ellipse, halfMultiplier * ellipse.size.width / 2, 0);
CGContextClipToRect(contextRef, clipRect);
CGContextRestoreGState(contextRef);
onlyDrawTopHalf = YES;
halfMultiplier = onlyDrawTopHalf ? -1.0 : 1.0;
ellipse = CGRectMake(50, 50, 100, 128);
clipRect = CGRectOffset(ellipse, halfMultiplier * ellipse.size.width / 2, 0);
CGContextAddEllipseInRect(contextRef, clipRect);
CGContextEOClip(contextRef);
CGContextFillEllipseInRect(contextRef, ellipse);
确切地说,第一段代码画圆(这行得通),第二段应该从中剪出椭圆,但这没有按预期工作。
【问题讨论】:
尝试在画圆之前先设置剪裁。 【参考方案1】:这两种形状都必须是完美的圆形,而不是椭圆。第二个圆的半径应该小一点,并且应该向右(或向左)移动一点,以获得完美的新月效果。
【讨论】:
它们的注视点相同 (50, 50),但半径不同 (100, 128) 和 (128, 128)。 然后你应该把陈述点滑动一点。并使用完美的圆形而不是椭圆。例如 (100, 100) 而不是 (128, 128)。 我不需要完美的圆圈。我想画一个圆,然后从中剪出椭圆形的区域。第一段画圆(有效),第二段应该从中剪出椭圆,但它没有按预期工作。我该如何解决这个问题?以上是关于iPhone 如何剪辑新月图案的主要内容,如果未能解决你的问题,请参考以下文章