塗りつぶしルール
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(); } }