[ruby-gnome2-doc-cvs] [Hiki] update - マウスカーソル

アーカイブの一覧に戻る

ruby-****@lists***** ruby-****@lists*****
2003年 5月 26日 (月) 23:14:11 JST


-------------------------
REMOTE_ADDR = 210.249.193.205
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/?%A5%DE%A5%A6%A5%B9%A5%AB%A1%BC%A5%BD%A5%EB
-------------------------

-------------------------
= マウスカーソル
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オブジェクトを生成します。
    * type - システムで予約されている画像を使う場合は、カーソルタイプを指定します。
       * Gdk::Cursor::ARROW
       * Gdk::Cursor::BASED_ARROW_DOWN
       * Gdk::Cursor::BASED_ARROW_UP
       * Gdk::Cursor::BOAT
       * Gdk::Cursor::BOGOSITY
       * Gdk::Cursor::BOTTOM_LEFT_CORNER
       * Gdk::Cursor::BOTTOM_RIGHT_CORNER
       * Gdk::Cursor::BOTTOM_SIDE
       * Gdk::Cursor::BOTTOM_TEE
       * Gdk::Cursor::BOX_SPIRAL
       * Gdk::Cursor::CENTER_PTR
       * Gdk::Cursor::CIRCLE
       * Gdk::Cursor::CLOCK
       * Gdk::Cursor::COFFEE_MUG
       * Gdk::Cursor::CROSS
       * Gdk::Cursor::CROSSHAIR
       * Gdk::Cursor::CROSS_REVERSE
       * Gdk::Cursor::DIAMOND_CROSS
       * Gdk::Cursor::DOT
       * Gdk::Cursor::DOTBOX
       * Gdk::Cursor::DOUBLE_ARROW
       * Gdk::Cursor::DRAFT_LARGE
       * Gdk::Cursor::DRAFT_SMALL
       * Gdk::Cursor::DRAPED_BOX
       * Gdk::Cursor::EXCHANGE
       * Gdk::Cursor::FLEUR
       * Gdk::Cursor::GOBBLER
       * Gdk::Cursor::GUMBY
       * Gdk::Cursor::HAND1
       * Gdk::Cursor::HAND2
       * Gdk::Cursor::HEART
       * Gdk::Cursor::ICON
       * Gdk::Cursor::IRON_CROSS
       * Gdk::Cursor::LEFTBUTTON
       * Gdk::Cursor::LEFT_PTR
       * Gdk::Cursor::LEFT_SIDE
       * Gdk::Cursor::LEFT_TEE
       * Gdk::Cursor::LL_ANGLE
       * Gdk::Cursor::LR_ANGLE
       * Gdk::Cursor::MAN
       * Gdk::Cursor::MIDDLEBUTTON
       * Gdk::Cursor::MOUSE
       * Gdk::Cursor::PENCIL
       * Gdk::Cursor::PIRATE
       * Gdk::Cursor::PLUS
       * Gdk::Cursor::QUESTION_ARROW
       * Gdk::Cursor::RIGHTBUTTON
       * Gdk::Cursor::RIGHT_PTR
       * Gdk::Cursor::RIGHT_SIDE
       * Gdk::Cursor::RIGHT_TEE
       * Gdk::Cursor::RTL_LOGO
       * Gdk::Cursor::SAILBOAT
       * Gdk::Cursor::SB_DOWN_ARROW
       * Gdk::Cursor::SB_H_DOUBLE_ARROW
       * Gdk::Cursor::SB_LEFT_ARROW
       * Gdk::Cursor::SB_RIGHT_ARROW
       * Gdk::Cursor::SB_UP_ARROW
       * Gdk::Cursor::SB_V_DOUBLE_ARROW
       * Gdk::Cursor::SHUTTLE
       * Gdk::Cursor::SIZING
       * Gdk::Cursor::SPIDER
       * Gdk::Cursor::SPRAYCAN
       * Gdk::Cursor::STAR
       * Gdk::Cursor::TARGET
       * Gdk::Cursor::TCROSS
       * Gdk::Cursor::TOP_LEFT_ARROW
       * Gdk::Cursor::TOP_LEFT_CORNER
       * Gdk::Cursor::TOP_RIGHT_CORNER
       * Gdk::Cursor::TOP_SIDE
       * Gdk::Cursor::TOP_TEE
       * Gdk::Cursor::TREK
       * Gdk::Cursor::UL_ANGLE
       * Gdk::Cursor::UMBRELLA
       * Gdk::Cursor::UR_ANGLE
       * Gdk::Cursor::WATCH
       * Gdk::Cursor::XTERM
       * Gdk::Cursor::X_CURSOR
       * Gdk::Cursor::ARROW
       * Gdk::Cursor::BASED_ARROW_DOWN

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

== 自作のカーソル用ビットマップを使う
次にカーソルを自作してみます。画像は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|URL:cursor.xbm>)), ((<mask.xbm|URL: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です)




ruby-gnome2-cvs メーリングリストの案内
アーカイブの一覧に戻る