私はcairoを使っていくつかの弧を描いています.これが機能です.
cairo_t* drawCircle(cairo_surface_t *container, int x, int y, int r, int cr, int cg, int cb, int ca)
{
cairo_t *cairoInstance; //Create instance
cairoInstance = cairo_create(container);
cairo_set_source_rgba(cairoInstance, 0,0,1,0.5);
cairo_arc(cairoInstance, x, y, r, 0, 2*M_PI);
cairo_stroke_preserve(cairoInstance);
cairo_fill(cairoInstance);
gtk_widget_queue_draw_area(GTK_WIDGET(window), 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); //Redraws the window
return cairoInstance;
}
最初の質問: source_rgba を後で変更してから塗りつぶすと、前の色が塗りつぶされます。別の色で塗りつぶす前に塗りつぶしをリセットする方法はありますか?
第二に、後で円弧/円をレンダリング解除/削除したい場合は、どうすればよいですか? cairo_destroy を使用しようとしましたが、インスタンスを破棄し、実際のオブジェクトを削除しないようです。
ありがとう!