菜鸟教程小白 发表于 2022-12-12 23:42:19

objective-c - 在形状周围绘制阴影,核心图形


                                            <p><p>我正在通过以下操作绘制一个带有笔划的形状</p>

<pre><code>- (void)drawRect:(CGRect)rect
{
    // Draw a cross rectagle
    CGContextRef    context   =   UIGraphicsGetCurrentContext();

    CGContextSaveGState(context);

    CGContextBeginPath(context);
    CGContextMoveToPoint    (context, 190, 0);
    CGContextAddLineToPoint (context, 220, 0);
    CGContextAddLineToPoint (context, 300, 80);
    CGContextAddLineToPoint (context, 300, 110);
    CGContextClosePath(context);

    CGContextSetFillColorWithColor(context, bgColor);                           // fill color
    CGContextSetStrokeColorWithColor(context, .CGColor);   // set color for stroke
    CGContextSetLineWidth(context, .8);                                       // set width for stroke
    CGContextDrawPath(context,kCGPathFillStroke);                           // do fill and stroke together


    CGContextEOClip(context);
    CGContextSetShadowWithColor(context, CGSizeMake(1, 1), 1.0, .CGColor);
    CGContextSetBlendMode (context, kCGBlendModeScreen);
    CGContextRestoreGState(context);
}
</code></pre>

<p>我的结局如下(十字旗)</p>

<p> <img src="/image/sHWsK.png" alt="enter image description here"/> </p>

<p>现在,我也想在十字旗周围投下一些阴影。</p>

<p>我应该怎么做才能做到这一点。请就这个问题给我建议。谢谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>CGContextSetShadow</code> 或 <code>CGContextSetShadowWithColor</code> ( <a href="https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGContext/Reference/reference.html" rel="noreferrer noopener nofollow">documentation 1</a> , <a href="https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_shadows/dq_shadows.html" rel="noreferrer noopener nofollow">documentation 2</a> )</p>

<p>在你的情况下,我能够通过</p>获得阴影

<pre><code>...
CGContextSaveGState(context);

CGContextSetShadowWithColor(context, CGSizeMake(-3 , 2), 4.0, .CGColor);

CGContextBeginPath(context);
CGContextMoveToPoint    (context, 190, 0);
...
</code></pre>

<p>然后我从底部删除了这些(剪辑在这里没有做任何事情,为什么是混合模式?)</p>

<pre><code>CGContextEOClip(context);
CGContextSetShadowWithColor(context, CGSizeMake(1, 1), 1.0, .CGColor);
CGContextSetBlendMode (context, kCGBlendModeScreen);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 在形状周围绘制阴影,核心图形,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/13297304/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/13297304/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 在形状周围绘制阴影,核心图形