1

アイコンができたので、正しく描画したいと思います。現在、カイロを使用してこれらの画像をウィンドウに描画しています。マスクとアイコンをピックスマップとして持っています。

cairo_surface_t *image;
cairo_surface_t *imask;
cairo_surface_t *surface;
cairo_t *csurface;

surface = cairo_xlib_surface_create(display, d, DefaultVisual(display, screen), 400, 400);
csurface = cairo_create(surface);

Pixmap icon;
Pixmap mask;

//XWM Stuff ...
if(icon != 0)
{
   get_pixmap_geometry(display, icon, &width, &height, &depth);
   image = cairo_xlib_surface_create(display, icon, DefaultVisual(display, screen), width, height);
   cairo_set_source_surface(csurface, image, 0, 0);
   //How do I apply the mask?
   //I tried cairo_set_operator(csurface, CAIRO_OPERATOR_SOURCE);
   cairo_paint(csurface);
}

ただし、アイコンには透明度がありません。インターネット上のカイロでこれを解決する例は見つかりませんでした。複雑な方法しかありませんが、文書化されていないため、まったく役に立ちません。元のアイコンを透明度で復元する方法のリンクまたは例を誰かが持っていますか? 前もって感謝します。

4

1 に答える 1