example_canvas_fillstyle.cpp

塗りつぶしルール
塗りつぶしルールのサンプルコード
canvas_fillstyle.png

塗りつぶしルール

void DlgSample::Draw(SGRect region)
{
    SGDialog::Draw(region);

    SGCanvasDraw cd( this );
    if( cd.CvBegin() ){

        cd.CvColor(0, 0, 0);
        cd.CvSetLineWidth(6);

        cd.CvRectangle(12, 12, 232, 70);
        cd.CvNewSubPath();
        cd.CvArc(64, 64, 40, 0, 360);
        cd.CvNewSubPath();
        cd.CvArcNegative(192, 64, 40, 0, -360);

        cd.CvSetFillRule(CV_FILL_RULE_EVEN_ODD);
        cd.CvColor( 0, 200, 0);
        cd.CvPreservePath();
        cd.CvFill();
        cd.CvColor(0, 0, 0);
        cd.CvStroke();

        cd.CvTransformTranslate(0, 128);
        cd.CvRectangle(12, 12, 232, 70);
        cd.CvNewSubPath();
        cd.CvArc(64, 64, 40, 0, 360);
        cd.CvNewSubPath();
        cd.CvArcNegative(192, 64, 40, 0, -360);

        cd.CvSetFillRule(CV_FILL_RULE_WINDING);
        cd.CvColor( 0, 0, 200);
        cd.CvPreservePath();
        cd.CvFill();
        cd.CvColor(0, 0, 0);
        cd.CvStroke();

        cd.CvEnd();
    }
}

PlusG リファレンスマニュアル Ver 2.0.0