4

以下に、drawMulticolorLineが呼び出されるたびにマルチカラーラインを描画するコードを示します。

    void drawMulticolorLine
    {
        CGContextBeginPath(secondaryContext);
        CGContextMoveToPoint(secondaryContext, h, v);
        for( int i = 1; i < lineWidth; ++ )
        {
            SetStrokeColor(i);
            CGContextAddLineToPoint(secondaryContext, h+i, v);
            CGContextDrawPath(secondaryContext, kCGPathFillStroke);
            CGContextMoveToPoint(secondaryContext, h+i, v);
        }
    }

    //a function that sets a different color for each i
    void SetStrokeColor(int i)
    {
        CGContextSetRGBStrokeColor(secondaryContext,…
    }

上記のコードは機能しますが、実際にライブで使用すると、パフォーマンスキラーになります。だから私は以下のコードで描画パフォーマンスを改善しようとしています。

    void drawMulticolorLine
    {
        CGContextBeginPath(secondaryContext);
        CGContextMoveToPoint(secondaryContext, h, v);
        for( int i = 1; i < lineWidth; ++ )
        {
            SetStrokeColor(i);
            CGContextAddLineToPoint(secondaryContext, h+i, v);
        }
        CGContextDrawPath(secondaryContext, kCGPathFillStroke);
    }

    //a function that sets a different color for each i
    void SetStrokeColor(int i)
    {
        CGContextSetRGBStrokeColor(secondaryContext,…
    }

線の色が常に同じである場合、このコードは良好なパフォーマンスで機能します。

私の問題は、CGContextDrawPathが呼び出されると、線全体が最後のCGContextSetRGBStrokeColorの色で描画されることです。

パスが追加されたすべての線分の色を保持する方法はありますか?

どんな助けでも大歓迎です。

乾杯、bzt

4

1 に答える 1