2016-12-22 6 views
0

いくつかのグラフィックウィンドウに線と記号をいくつかの色で描画するCコードを作成しています。 wwwのコンサルティング私はカラーマップを使用する必要があることを知ったが、動作させることはできない。 私が見つけたコードのほとんどは、新しいカラーマップを作成して表示することですが、色の数が少々(黄色、赤色、マゼンタ、...)しか必要ないので、デフォルトマップで十分でしょう。 デフォルトのカラーマップのscreen-> default_colormapで、どのような色が使えるのですか? 誰かが、ウィンドウとそのグラフィックコンテキストを作成し、その中に緑色の円を描く(青い四角形を描く)という初歩的な例を教えてもらえますか?xcbライブラリ:色の描画方法

答えて

0

次のコードは、私が取り組んでいるプロジェクトからいくつか抜粋したものです。かなりの数の色で描画しています。それは私のために働く - 私はこれが最高の、または非常に良い方法であると言っているわけではありませんが、私は自分自身を教えようとしている愛好者であり、私が見つけた疎な例の中から、一緒に石畳をした。

check this manpage for: xcb_change_gc(etc.,);

私は実際に保存されたRGB値の単純な配列が、私が描くuint32_ts、ある保ちます。私は自分の満足のためにしかプログラムしていないので、これは非常に移植性の高いものかどうかはわかりません。また、色のコーディングを発見するためにいくつかの実験が必要でした。ハードウェアに依存していると確信しています。カラーマップの利点は、それらがポータブルであることだと思います。トゥルーカラーがないと、カラーマップは適切な色で描画するのに役立ちます。私は個人的に知る必要はありません。私はいくつかの数学を探索するために、ピクセルや塗りつぶし矩形を使って描画するのが好きです。

uint32_t rgb = 0xFFFFFFFF; // white on my system 

uint32_t mask = XCB_GC_FOREGROUND, 
      foreground_value = rgb; 

xcb_gcontext_t gc; 

gc = xcb_generate_id(connection); 
xcb_create_gc (connection, gc, drawing_buffer_pixmap, mask, &foreground_value); 

// below, the color of the gc is changed rather than making a new one 

xcb_change_gc(connection, *gc, mask, &foreground_value); 
関連する問題