Я использую связывание xcb
и cairo
в ржавчине, чтобы нарисовать что-то на X. И я использую функцию для рисования многоугольника (код ниже):
fn polygon(&self, points: &[Position], color: Color) {
if points.len() >= 2 {
let context = cairo::Context::new(&self.cairo_surface);
context.set_source_rgb(color.r, color.g, color.b);
context.move_to(points[0].x as f64, points[0].y as f64);
for i in 1..(points.len()) {
context.line_to(points[i].x as f64, points[i].y as f64);
}
context.close_path();
context.fill();
}
}
И после рисования я сбрасываюкак поверхность Каира, так и соединение xcb.Но многоугольник не появляется, пока я не переместлю окно или не переключу окна (с помощью Alt + Tab).
Я также использую pangocairo
, чтобы рисовать на нем текст.Это не проблема.