2016-09-26 3 views
1

GtkDrawingAreaにあらかじめ計算されたヒートマップ画像をレンダリングするGtk2プログラムを作成しています。この手順は一般的に次のようなものです。カイロ画像がGtkDrawingAreaにペイントされない

  • カイロの画像面にヒートマップ画像を生成します。
  • GtkDrawingAreaのイベントを公開します。コールバックを露出で
  • は、次の関数が呼び出される:
  • 最初の関数、無地グレー色に明確な前図中

:第二の機能で

cairo_t* cr = gdk_cairo_create(widget->window); 
cairo_set_source_rgb(cr, 0.5, 0.5, 0.5); 
cairo_paint(cr); 
cairo_destroy(cr); 

は、プリレンダリングされた画像をペイント:

第三の機能で
cairo_t* cr = gdk_cairo_create(widget->window); 
cairo_set_source_surface(cr, buffer_surface, 0, 0); 
cairo_paint(cr); 
cairo_destroy(cr); 

、プロットいくつかのベクトルの適応症:

cairo_t* cr = gdk_cairo_create(widget->window); 
cairo_move_to(cr, xxx, xxx); 
cairo_line_to(cr, xxx, xxx); 
cairo_line_to(cr, xxx, xxx); 
cairo_line_to(cr, xxx, xxx); 
...... 
cairo_stroke(cr); 
cairo_destroy(cr); 

ただし、第1および第3の関数のみが効果を持つため、第2の関数の画像ペイントは表示されません。結果のGtkDrawingAreaは黒い線で中間色の背景のみを持ちます。

私はそれをpngファイルにエクスポートしたものの、ソース画像サーフェスにはコンテンツが入っていると確信しています。なぜGUIで表示されないのですか?

答えて

1

これは、カイロ画像サーフェスとGDKウィンドウの間の色の不一致が原因です。 32ビットARGBでイメージサーフェスを作成しましたが、ウィンドウはRGBです。私はARGBからRGBに画像の表面を変更した後、すべてが解決されました。

関連する問題