私はカイロを新しくして、透明な色とストロークでテキストを作成しようとしています。
ストロークカラーの透明度は機能しますが、テキストのカラー透過度はtransparency_value
ではありません。 私はtransparency_value
を減らす場合は、テキストの色がちょうど暗い(黒)を取得し、transparency_value
が増加すると、テキストの色明るく(私の場合は緑)Cairo透明に塗りつぶし
cairo_surface_t* surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 640, 480);
cairo_t* cairo = cairo_create(surface);
cairo_set_font_face(cairo, myfont_face);
cairo_set_font_size(cairo, 25);
cairo_text_extents_t extents;
cairo_text_extents(cairo, "Hello World", &extents);
cairo_move_to(cairo, 200, 200);
cairo_text_path(cairo, "Hello World");
double transparency_value = 0.5;
cairo_set_source_rgba(cairo, 0,1,0,transparency_value); //transparency doesn't work
//cairo_fill(cairo); //this didn't make a difference
cairo_fill_preserve(cairo);
cairo_set_source_rgba(cairo, 0.56, 0.76, 0.96, 0.5); //transparency works
cairo_set_line_width(cairo, 1.5);
cairo_stroke(cairo);
ご返信ありがとうございます。私は 'cairo_move_to'を使っていました、そうでなければ出力が見えませんでした。コードを短くするために 'cairo_move_to'をスキップしました。コードを更新しました。関数呼び出しの順序で間違いをしていますか? あなたのコードで 'transparency_value'を変更しようとしましたか? –
私の編集を参照してください。結果を示す別の画像を 'transparency_value = 0.1'で追加しました。結果はまだ期待どおりに見え、私はあなたが見ている黒を再現することはできません。私は "間違っている"とは何ですか? –
hmm!これはC++のバグですか?あるいは、フリータイプのライブラリでカイロを正しく構築できなかった可能性があります - 間違った出力が得られますか? –