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 如何剪辑新月图案的主要内容,如果未能解决你的问题,请参考以下文章

UIView CGGradient 剪辑到绘制的“框架”

在 iPhone 应用程序中播放声音剪辑的最简单方法是啥?

iPhone 应用程序可以生成网络剪辑吗?

iPhone OpenGL ES 2.0 奇怪的图案在 COLLADA 文件中的球体上渲染纹理

iPhone如何剪掉椭圆的一半

OpenGLES(iPhone)如何渲染一个巨大的四边形