◆PROCESSING 逆引きリファレンス
カテゴリー:キーボード・マウス処理
マウスポインタのスクリーン座標を知るには
【解説】
「マウスポインタの座標を知るには」記事では、PROCESSINGがサポートしているマウスの各イベント関数や、グローバル変数を用いて、マウスカーソルの座標を得る方法を紹介しました。
これらの座標は、PROCESSINGの実行結果ウィンドウの描画領域左上からの「相対座標」でした(下図参照)。
では、マウスカーソルが画面上のどこにあるのかという座標(スクリーン座標)を知るには、どうしたら良いでしょうか?。
マウスカーソルのスクリーン座標を得るには、JavaのMouseInfoクラスがサポートしているメソッドを利用します。
詳しく知りたい方は、下記公式サイトも参照して下さい。
【構文】
PointerInfo pi = MouseInfo . getPointerInfo( ) ;
Point pt = pi . getLocation( ) ;
double x = pt . getX( ) ; // マウスカーソルのスクリーンX座標
double y = pt . getY( ) ; // マウスカーソルのスクリーンY座標
【注意】
getPointerInfo( ) は static メソッドなので、MouseInfo クラスのインスタンス変数を作成せずに使います。
得られる座標は、マウスカーソルのスクリーン上座標です。
【関連記事】
サンプルプログラム
スクリーン座標を表示する例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import java.awt.PointerInfo; import java.awt.MouseInfo; void setup(){ size(250,150); textSize(16); textAlign( LEFT, TOP ); } void draw(){ background(0); //Mouseのスクリーン座標を得る PointerInfo pi = MouseInfo.getPointerInfo(); int sx = (int)pi.getLocation().getX(); int sy = (int)pi.getLocation().getY(); //スクリーン座標を表示する fill(255); text( "screen mouse=(" + sx + "," + sy + ")", 0, 0 ); //相対座標を表示する fill( color( 255,255,0 )); text( "relative mouse=(" + mouseX + "," + mouseY + ")", 0, 32 ); } |
実行結果ウィンドウ上に、マウスカーソルのスクリーン座標と相対座標を表示します。
相対座標は、PROCESSINGが持つグローバル変数を利用しているため、マウスカーソルが実行結果ウィンドウ上に乗っている場合のみ、変化します。
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。