新規作成  編集  Ruby-GNOME2 Project Website  ページ一覧  検索  更新履歴  編集履歴  RSS  ログイン

マウスカーソル

マウスカーソル

まだRuby/GTK(1)用です

Gdk::Cursorはマウスカーソル用オブジェクトです。

基本的な使い方

Gdk::Cursorはシステムで予約されている画像を使う場合と、自分で画像を作成する場合の二通りがあります。まずは、システムで予約されている画像を使ってみます。

require 'gtk'

window = Gtk::Window.new
window.realize
window.window.set_cursor(Gdk::Cursor.new(Gdk::Cursor::WATCH))
window.set_usize(200,100).show_all

Gtk.main
Gdk::Cursor.new(type)
Gdk::Cursorオブジェクトを生成します。
Gdk::Window#set_cursor(cursor)
カーソルを設定します。Gtk::Windowではないことに注意してください。なお、Gdk::WindowGtk::Windowが実体化されないと生成されません。そこで上記例ではこのメソッドを呼ぶ前にGtk::Widget#realizeで実体化しています。

自作のカーソル用ビットマップを使う

次にカーソルを自作してみます。画像はXBM形式を使用します。

require 'gtk'

cursor_bits = [
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xf0, 0x3f, 0x00, 0xe0, 0x78, 0x00, 0xe0, 0x70, 0x00, 0xe0, 0x70, 0x00,
   0xe0, 0x38, 0x00, 0xe0, 0x1f, 0x00, 0xe0, 0x1d, 0x00, 0xe0, 0x38, 0x00,
   0xe0, 0x78, 0x00, 0xe0, 0xf0, 0x00, 0xf0, 0xf3, 0x01, 0xf0, 0xe3, 0x01,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00].pack("c*")

cursor_mask_bits = [
   0x63, 0x8e, 0x0f, 0x67, 0x8e, 0x0f, 0x06, 0xc6, 0x07, 0x04, 0x00, 0x00,
   0xf0, 0x3f, 0x08, 0xe7, 0x78, 0x0e, 0xe7, 0x70, 0x0f, 0xe4, 0x70, 0x03,
   0xe0, 0x38, 0x00, 0xe7, 0x1f, 0x0c, 0xe7, 0x1d, 0x0f, 0xe0, 0x38, 0x0e,
   0xe0, 0x78, 0x08, 0xe7, 0xf0, 0x00, 0xf7, 0xf3, 0x01, 0xf0, 0xe3, 0x01,
   0x04, 0x00, 0x00, 0x46, 0x24, 0x06, 0x67, 0x66, 0x0e, 0x67, 0x66, 0x0e].pack("c*")

window = Gtk::Window.new
window.realize

source = Gdk::Bitmap.create_from_data(window.window, cursor_bits, 19, 19)
mask = Gdk::Bitmap.create_from_data(window.window, cursor_mask_bits, 19, 19)

fg = Gdk::Color.new(65535, 0, 0)
bg = Gdk::Color.new(65535, 65535, 0)

cursor = Gdk::Cursor.new(source, mask, fg, bg, 10, 10)

window.set_usize(200,100).show_all
window.window.set_cursor(cursor)

Gtk.main

XBM画像(XPM画像ではないです)を2つ用意して、それをGdk::Bitmap?化し、Gdk::Cursor.newのsource, maskに指定します。

Gdk::Bitmap.create_from_data(gdkwindow, bits, width, height)
XBM画像のバイト列から、ビットマップを生成します。
  • gdkwindow - Gdk::Window
  • bits - XBM画像のバイト列
  • width - 画像の幅
  • height - 画像の高さ
Gdk::Cursor.new(source, mask, fg, bg, x, y)
Gdk::Cursorオブジェクトを生成します。
  • source - カーソル画像
  • mask - カーソル画像のマスク
  • fg - 前景色(Gdk::Color)
  • bg - 背景色(Gdk::Color)
  • x - カーソルのホットスポットの水平方向のオフセット位置
  • y - カーソルのホットスポットの垂直方向のオフセット位置

自作のカーソル用ビットマップを使う(XBM画像は別ファイル)

今度はXBMファイルから画像を生成してみます。画像はcursor.xbm, mask.xbmを使ってください。 #ちょっと主旨がずれるのですがXBM画像ファイルを使うところが他に見つからなかったのでこちらで説明します。

require 'gtk'

window = Gtk::Window.new
window.realize

source = Gdk::Bitmap.create_from_xbm(window.window, "cursor.xbm")
mask = Gdk::Bitmap.create_from_xbm(window.window, "mask.xbm")

fg = Gdk::Color.new(65535, 0, 0)
bg = Gdk::Color.new(65535, 65535, 0)

cursor = Gdk::Cursor.new(source, mask, fg, bg, 10, 10)

window.set_usize(200,100).show_all
window.window.set_cursor(cursor)

Gtk.main
Gdk::Bitmap.create_from_xbm(gdkwindow, filename)
Gdk::Bitmap?をファイルから生成します。
  • gdkwindow - Gdk::Window
  • filename - XBM画像ファイル名(大体拡張子はxbmです)
更新日時:2003/05/26 23:15:50
キーワード:
参照:[gtk2-tut]