核心图形中的浮雕效果

8

我又有两个问题,它们是相关的:

  1. 我想用核心图形绘制浮雕线。 有人能建议我如何在触摸事件上绘制内阴影的线吗?
  2. 即使是为了绘制外部阴影。 阴影重叠在中间。 而且用其他颜色绘制的线就像蠕虫一样……有人能帮忙吗? 下面的图像说明了我想解释问题2的意思:enter image description here 创建的阴影不均匀。 它们在某些点变暗

我添加的代码用于绘制线条:

    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;
    }

2
请避免大量使用问号。 - Till
请展示你的绘图代码。在你这样做之前,我们只能猜测你在做什么。 - sosborn
这是使用核心图形的简单绘图代码。我只是在线条上添加阴影。 - DivineDesert
@DimplePanchal 我也遇到了同样的问题。我的代码和你的一样,但没有for循环。我不知道为什么你要使用循环?你的[currentPath count]是多少?请给我建议。 - Hitarth
@DimplePanchal请在这里检查我的代码 http://stackoverflow.com/questions/11132546/how-to-erase-finger-paint-on-custom-uiview-in-iphone/11167098#11167098 ... 实际问题是这个https://dev59.com/f2XWa4cB1Zd3GeqPLUl5; - Hitarth
3个回答

4
我找到了解决方案。。问题非常愚蠢。。我在每次迭代中都在划路径,这就导致了问题..现在,即使alpha小于1,我也可以画图..
CGContextStrokePath(context);

这行代码在循环外执行,现在一切都正常了 :)


3

对于您的重叠阴影,您需要一个透明度层来先合成它们。请参见Quartz 2D编程指南中的透明度层


你说的观点很好,但是我应该在哪里添加透明层呢?因为我正在触摸事件上绘制小线条,每个线条都不能添加到透明层中。我之前尝试过这样做,但没有得到积极的解决方案。如果我做错了,那我就不知道了。但我的困惑是要向谁绘制透明层呢? - DivineDesert

0

看起来你是通过一系列圆来绘制路径。

问题在于你已经给每个点设置了阴影,这就是为令你出现奇怪的效果的原因。

一个可能的解决方案是:不要在点上放置阴影,而是放在路径上:复制你已经绘制的线条,用不同的颜色画出来,偏移它并将其放在实际线条下面。

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


1
我并不是通过一系列圆来绘制路径,因为我正在为线条添加阴影,而线条是由点数组绘制的,每条小线都被阴影覆盖,因此你可以看到一系列圆。 - DivineDesert
这类似于我在使用alpha值小于1的线条绘制时得到的效果。@Abizern - DivineDesert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接