先日、ペンタブレットを買った。ゲーム作りのためだ。
さて、ペイントソフトによっては、「手ぶれ機能」というものが有る。
過去2〜8回くらいのカーソル座標を平均化し、ブレの少ない きれいな線を書かせてくれる機能だ。
が、この機能を単体で提供してくれるソフトが、見つからない。VECTORのフリーソフトにも無いようだ。
自分で作ろうと思い、プログラミング言語「HSP3.1」と格闘する事 3時間…できない。何か、根本的に間違っているようだ。
↓に、ソースコードを載せる。これは無茶苦茶だ…。
title "アンティ・ブラー Ver 0.0 By ガモウソフト"
randomize
screen 0, 320,100, 0, 100,100 ; メインウィンドウ#0。フルスクリーン。左上の座標も指定。
cls 1 ;
dim MouseXrecord, 100 : dim MouseYrecord, 100 ; マウス座標の履歴を保存する配列変数。多めに確保。
Suppression = 10 ; とりあえず、平均するマウス座標は、10。
BlurPower = 10 ; とりあえず、振動パワー は、10。
; GUI
pos 10,10 ;
mes "Esc キーでも、終了できます。" ;
onkey gosub *KeyPushed ; ⇒ キー押された
pos 10,36 ;
button gosub "入", *FunctionON ; ⇒ 補正ON
pos 20,60 ;
input Suppression, 40,20 ;
pos 76,36 ;
button gosub "切", *FunctionOFF ; ⇒ 補正OFF
pos 160,36 ;
button gosub "震", *FunctionBLUR ; ⇒ 振動モード
pos 170,60 ;
input BlurPower, 40,20 ;
stop ;
*Main ; ★ メイン。ソフト起動と同時に、マウスの平均座標を 計算し続ける。
repeat Suppression ; 変数「抑制」の回数、くりかえす。0からカウント。
MouseXrecord(cnt) = ginfo_mx ; マウス座標を記録。
MouseYrecord(cnt) = ginfo_my ; 〃
await 1 ;
loop ; この時点で、「抑制」の回数分 マウス座標が記録された。
*FunctionON ; ★補正ON
;
repeat Suppression ; 変数「抑制」の回数、くりかえす。0からカウント。
AverageMouseX = ( AverageMouseX + ginfo_mx ) / 2 ; マウス座標を平均する。
AverageMouseY = ( AverageMouseY + ginfo_my ) / 2 ; 〃
mouse AverageMouseX, AverageMouseY ; マウス座標を補正。
wait 10 ; 〃
loop ; 以上。
;
goto *FunctionON ; ↑ループ。
*FunctionOFF; ★補正OFF
*FunctionBLUR;★振動モード
*KeyPushed ; ★ キー押された ;
If wparam = 27 : end ; ESC が押されたら、終了。
posted by ガモウソフト at 08:51|
Comment(3)
|
日記
|

|