Core Graphics中的浮雕效果

时间:2012-02-27 12:31:37

标签: iphone objective-c ios4 core-graphics quartz-graphics

我再次提到两个相互关联的问题

  1. 我想绘制带有核心图形的浮雕线条。 任何人都可以建议我如何在触摸事件上绘制内线阴影吗?
  2. 即使是绘制外部阴影。 阴影在两者之间绘制重叠。用黑色以外的颜色绘制的线就像蠕虫一样.. 谁能帮我? 下面的图片说明了我对问题2的解释:enter image description here 阴影创造不均匀。他们在某些方面变暗了
  3. 我正在添加用于绘制线条的代码..

        for (int i=0; i<[currentPath count]; i++) 
        {
            CGPoint mid1 = [[self midPoint:[currentPath objectAtIndex:i+1]  :[currentPath objectAtIndex:i]] CGPointValue]; 
            CGPoint mid2 = [[self midPoint:[currentPath objectAtIndex:i+2] :[currentPath objectAtIndex:i+1]] CGPointValue];
            CGContextMoveToPoint(context, mid1.x, mid1.y);
            CGContextAddQuadCurveToPoint(context, [[currentPath objectAtIndex:i+1] CGPointValue].x, [[currentPath objectAtIndex:i+1] CGPointValue].y, mid2.x, mid2.y); 
            CGContextSetShadow(context, CGSizeMake(-2, -2), 3);
    
            CGContextSetLineCap(context, kCGLineCapRound);
            CGContextSetStrokeColorWithColor(context,[color CGColor]);              
            CGContextSetLineWidth(context, linewidth);              
            CGContextStrokePath(context);
            i+=2;
        }
    

3 个答案:

答案 0 :(得分:4)

我找到了解决方案.. 问题很愚蠢...... 我在创建问题的每一次迭代中都在煽动道路。现在我甚至可以用不到1的alpha绘制..

CGContextStrokePath(context);

这条线在外面循环播放..现在一切正常了:)

答案 1 :(得分:3)

对于重叠阴影,您需要透明层首先合成它们。请参阅Quartz 2D Programming Guide中的Transparency Layers

答案 2 :(得分:0)

看起来你正在使用一系列圆圈绘制路径。

麻烦的是你已经在各个点上设置了阴影,这就是你得到奇怪效果的原因。

一种可能的解决方案 - 不要在点上放置阴影,放在路径上:复制您绘制的线条,以不同的颜色绘制,偏移它并放入实际线条下。

或者,如果您正在使用图层 - 请查看阴影路径。