角丸長方形のカイロでボックスを描画するために、次の関数を作成しました
void square (Context cr, int x, int y, int sizex, int sizey, int radius)
{
cr.move_to (x + radius, y);
cr.arc (x + sizex - radius, y + radius, radius, 1.5 * PI, 0);
cr.arc (x + sizex - radius, y + sizey - radius, radius, 0, 0.5 * PI);
cr.arc (x + radius, y + sizey - radius, radius, 0.5 * PI, PI);
cr.arc (x + radius, y + radius, radius, PI, 1.5 * PI);
}
これは非常にCに似た方法です。私はこれをよりオブジェクト指向の方法で行いたいと思います。Cairo.Contextのメソッドとして関数を実装するようなものです。