ソフトウェア設計及び演習2017

GDK2017::概要

GDKの概要

GDK (GIMP Drawing Kit)

  • GTKのグラフィック機能
  • 線を描いたり、四角を描いたり、丸を描いたり
  • GDKの関数は、GLibの関数をそのまま呼び出しているものが多い

Cairo(A Vector Graphics Library)

  • 最近はGDKの関数で直接描かずに,Cairoを使って書く
  • ベクターグラフィックスなのでジャギーがでない
  • 多くの出力デバイスに対応

画像

  • 2次元配列に「色」が格納されている
  • 左上が原点
  • 横がx軸(左から右に増加、ピクセル)
  • 縦がy軸(上から下に増加、ライン)
  • 配列の1つを「ピクセル(pixel)」と呼ぶ

GDK&Cairoで描く

  • 手で描くのと比較すると、
  ---手で描く--- ---GDKで描く--- ---cairoで描く---
---媒体--- 画用紙 GDK2017::ドローアブル GDK2017::ドローアブル
---道具--- 絵の具、筆 GDK2010::グラフィックコンテキスト@ GDK2017::Cairo
---手段--- GDK2010::描画関数@ GDK2017::Cairo

GDKで絵を描く仕組み

  • ウィンドウ上に絵を書くときは直接ウィンドウへ描画せず、ドローイングエリアウィジェットを介して行う
  • 画面の再描画(exposeイベント)などの処理はユーザが用意しなければならない
  1. ドローイングエリアとピクスマップを作成 GDK2017::ドローアブル
  2. exposeイベントの設定 GDK2017::exposeイベント
  3. ピクスマップに描画 GDK2017::Cairo
  4. gtk_main()をした後に、exposeイベントが起こったらコピー GDK2017::exposeイベント

サンプル

ソースプログラムの所在
ファイルリスト
  • gtk_lib.h gtk_lib.c
    • gtkを(ほんの少しだけ)簡単に利用できるようにまとめたラッパー(ライブラリ)
    • 以前の講義担当だった鈴木先生が作られたものを少し変更
  • cairo_sample_lib.h cairo_sample_lib.c
    • cairoの機能を紹介するためのサンプルライブラリ
    • 以前に中谷先生が作られたものを少し変更
  • cairo_sample.c
    • 今回のメインプログラム.cairoを使った5種類のウィジェットとQuitボタンをまとめて表示
実行手順
 #svnから持ってくる(実行した直下にcairo_sampleディレクトリができる)
 svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/
 
 #持ってきたディレクトリに移動
 cd cairo_sample
 
 #make
 make
 
 #実行
 ./cairo_sample

リンク


最終更新日:2017/04/28 15:01:06