我在开罗用圆角矩形
创建了以下绘图框功能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);
}
这是一种非常类似的方式。我宁愿以更加面向对象的方式做到这一点。就像将函数实现为Cairo.Context的方法一样。
答案 0 :(得分:1)
如果不修改该类的定义(在本例中为cairo.vapi),则无法向现有类添加方法。但是,你可以做的是继承Cairo.Context并使用它代替Cairo.Context。这样的事情可以解决问题:
[Compact]
public class Context : Cairo.Context {
public void square (int x, int y, int sizex, int sizey, int radius) {
this.move_to (x + radius, y);
this.arc (x + sizex - radius, y + radius, radius, 1.5 * Math.PI, 0);
this.arc (x + sizex - radius, y + sizey - radius, radius, 0, 0.5 * Math.PI);
this.arc (x + radius, y + sizey - radius, radius, 0.5 * Math.PI, Math.PI);
this.arc (x + radius, y + radius, radius, Math.PI, 1.5 * Math.PI);
}
public Context (Cairo.Surface target) {
base (target);
}
}