
CairoのRuby bindingであるrcairoを使ってみた。
で、それで、ticker-appletのメッセージボックスを描いてみた。
pythonには、pynotifyというメッセージボックス描画APIがあるようだが、Rubyにはなさげだったので、真似してticker-appletに描いてみた。
Cairoは以下のストーリーで使用する
1. Surfaceの作成
surface = Cairo::ImageSurface.new(format, width, height)
2. Contextの作成
context = Cairo::Context.new(surface)
3. Contextへの描画
## 背景 ##
context.set_source_rgb(1,1,1)
context.rectangle(0,0,width,height)
context.fill
## Text
markup = "Hello World "
attr_list, text = Pango.parse_markup(markup)
layout = context.create_pango_layout
layout.attributes = attr_list
layout.text = text
context.show_pango_layout(layout)
## 移動 ##
context.translate(100, 200)
## 画像ロード ##
context.set_source_pixbuf(Gdk::Pixbuf.new('file.png')
context.paint
といった感じ。
## GTKとの連携プレー ##
drawing_area = Gtk::DrawingArea.new
drawing_area.signal_connect('expose_event') do |widget, event|
context = widget.window.create_context
## ... ##
end
意外と簡単に使えるのでグラフ描画ライブラリも将来デザインしてみよう。

0 件のコメント:
コメントを投稿