!!! GDKの概要 !! GDK (GIMP Drawing Kit) * GTKのグラフィック機能 * 線を描いたり、四角を描いたり、丸を描いたり * GDKの関数は、GLibの関数をそのまま呼び出しているものが多い !! Cairo(A Vector Graphics Library) * 最近はGDKの関数で直接描かずに,Cairoを使って書く * ベクターグラフィックスなのでジャギーがでない * 多くの出力デバイスに対応 !! 画像 * 2次元配列に「色」が格納されている * 左上が原点 * 横がx軸(左から右に増加、ピクセル) * 縦がy軸(上から下に増加、ライン) * 配列の1つを「ピクセル(pixel)」と呼ぶ ((img gdk-apple2.jpg)) !! GDK&Cairoで描く * 手で描くのと比較すると、 || |---手で描く---|---GDKで描く---|---cairoで描く--- ||---媒体---| 画用紙 |[[GDK2014::ドローアブル]]|[[GDK2014::ドローアブル]] ||---道具---|絵の具、筆|[GDK2010::グラフィックコンテキスト|http://wiki.cis.iwate-u.ac.jp/~wiki/Soft.cgi?GDK2010::グラフィックコンテキスト]|[[GDK2014::Cairo]] ||---手段---|手|[GDK2010::描画関数|http://wiki.cis.iwate-u.ac.jp/~wiki/Soft.cgi?GDK2010::描画関数]|[[GDK2014::Cairo]] ((img Gdk-and-Cairo.png)) !! GDKで絵を描く仕組み * ウィンドウ上に絵を書くときは直接ウィンドウへ描画せず、ドローイングエリアウィジェットを介して行う * 画面の再描画(exposeイベント)などの処理はユーザが用意しなければならない + ドローイングエリアとピクスマップを作成 [[GDK2014::ドローアブル]]
((img gdk-drawingB1.jpg)) + exposeイベントの設定 [[GDK2014::exposeイベント]]
((img gdk-drawingB1B.jpg)) + ピクスマップに描画 [[GDK2014::Cairo]]
((img gdk-drawingB2.jpg)) + gtk_main()をした後に、exposeイベントが起こったらコピー [[GDK2014::exposeイベント]]
((img gdk-drawingB3B.jpg)) !! サンプル ! ソースプログラムの所在 * 以下のsvnのリポジトリ ** https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/ ! ファイルごとの解説 * [gtk_lib.h|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/gtk_lib.h] * [gtk_lib.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/gtk_lib.c] * [cairo_sample_lib.h|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/cairo_sample_lib.h] * [cairo_sample_lib.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/cairo_sample_lib.c] * [cairo_sample.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/cairo_sample.c] ! 実行手順 8< #svnから持ってくる(実行した直下にcairo_sampleディレクトリができる) svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/ #持ってきたディレクトリに移動 cd cairo_sample #make make #実行 ./cairo_sample >8 !! リンク * [GDK Reference Manual|https://developer.gnome.org/gdk2/2.24/] ** GDK 2.24.22対応(システムは2.24.13、2013/10/24現在)、英語 * [Cairo Reference Manual|http://cairographics.org/manual/] ** Cairo 1.12.16対応(システムは1.12.2、2013/10/24現在)、英語 * [[GDK2014::GdkPixbuf]] * [[GDK2014::アニメーション]] * [[GDK2014::イベント]]