マニュアル > Tips一覧 > AutoHotKey > 描画色・透明色を2つのキーに割り当て

「マニュアル/Tips一覧/AutoHotKey/描画色・透明色を2つのキーに割り当て」の編集履歴(バックアップ)一覧はこちら

マニュアル/Tips一覧/AutoHotKey/描画色・透明色を2つのキーに割り当て - (2010/01/06 (水) 06:51:55) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

スクリプト名 :HkSaiTransparency 用途   :1キートグル仕様の「描画色/透明色」の切替を2つのキーに分割して設定できます 動作環境 : / Win7x64 / SAI 1.1.0 / AutoHotKey Version 1.0.48.05 / Wacom Intuos2 Driver 6.1.2-4 ファイル名:HkSaiSlider.ahk #highlight(lisp){{ ;////////////////////////////////////////////////////////// ; HkSaiTransparency ; 1キートグル仕様の通常/透過モードを2つのキーに分割して設定できます ; ; 無保証・再配布・改変自由 ; ; 動作 AutoHotKey 1.0.48.05 ;    SAI 1.1.0 ; ; ; 使用法 ; スクリプトを起動したら、 ; 1.ツールパレットを表示させ ; 2.適当なブラシを選択し ; 3.開いているSAIファイルのキャンバスの上にマウスカーソルを乗せてください ; 4.スクリプトがブラシのマウスカーソルを認識し、動作を開始します ; ; Z 通常ブラシ ; C 透明ブラシ ; ; このソースの最下部にある、キー設定の部分を変更すれば ; お好みのキーに割り当てられます。 ; ; 2009-12-26 ; ツールパネル消してても動作するように(マウスカーソル判定) ; 2009-12-22 ; 初版 ; ;////////////////////////////////////////////////////////// ; 設定 /////////////////////////////////////////////////// ;////////////////////////////////////////////////////////// ; デバッグモード ; 設定: ; 0 ... オフ ; 1 ... オン DebugMode=0 ;////////////////////////////////////////////////////////// ;設定ここまで //////////////////////////////////////////// ;////////////////////////////////////////////////////////// #MaxThreads 1 #MaxThreadsPerHotkey 1 #HotkeyInterval 1000 ; This is the default value (milliseconds). #MaxHotkeysPerInterval 50 ; This is the default value. ;初期化 Loop{ TA_SAI:="SAI ahk_class sfl_window_class" hSAI:=WinExist(TA_SAI) If WinActive(TA_SAI){ If(CheckChecker()){ ControlSend,, -, SAI ahk_class sfl_window_class } hNomalCursor:=GetCursor(hSAI) if (hNomalCursor>1000){ if DebugMode tooltip, hSAI%hSAI% 通常%hNomalCursor% break } } sleep,1000 } return GetCursor(HWND){ mytid:=DllCall("kernel32.dll\GetCurrentThreadId","UInt") targettid:=DllCall("user32.dll\GetWindowThreadProcessId","UInt",HWND,"UInt",0,"UInt") if(mytid==targettid){ hcursor:=DllCall("user32.dll\GetCursor","Short") }else{ DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",-1) hcursor:=DllCall("user32.dll\GetCursor","Short") DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",0) } return hcursor } CheckChecker(){ ;ツールウィンドウの位置 WinGetPos, ToolX, ToolY, , , ツール ahk_class sfl_window_class ;ウィンドウある? if(!ToolX && !ToolY){ ;tooltip, ツールウィンドウがないよ! ;sleep, 1000 ;tooltip return -1 } ;座標モード変更 CoordMode Pixel,Screen CoordMode Tooltip,Screen ;選択色ボックスの位置 ControlGetPos, X, Y, , , sfl_window_class1, ツール ;透過状況表示箱の位置 GetX:=ToolX+X+2 GetY:=ToolY+Y+34 ;sleep, 250 ;色取得 PixelGetColor, CheckerColor, GetX, GetY if (CheckerColor=0xFFE0E0) return 1 if (CheckerColor=0xFAFAFA) return 0 } ToggleTrans(GoTo){ Global DebugMode,hSAI,hNomalCursor Loop,1{ ;sleep, 250 ;色取得 ;PixelGetColor, CheckerColor, GetX, GetY EnableTrans:=CheckChecker() ;FFE0E0 erase if (GoTo=0) { ;通常にする If (EnableTrans=1) { ;通常にする ControlSend,, -, SAI ahk_class sfl_window_class if DebugMode Tooltip, %CheckerColor% 通常にする %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=0) { ;もう通常 if DebugMode Tooltip, %CheckerColor% もう通常 %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=-1) { ;カーソル判別モード hCursor:=GetCursor(hSAI) if DebugMode tooltip, 通常にする 今の%hCursor% 通常%hNomalCursor% if (hCursor>hNomalCursor) ControlSend,, -, SAI ahk_class sfl_window_class } } if (GoTo=1){ ;透明にする If (EnableTrans=0) { ;透明にする ControlSend,, -, SAI ahk_class sfl_window_class if DebugMode Tooltip, %CheckerColor% 透明にする %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=1) { ;もう透明 if DebugMode Tooltip, %CheckerColor% もう透明 %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=-1) { ;カーソル判別モード hCursor:=GetCursor(hSAI) if DebugMode tooltip, 透明にする 今の%hCursor% 通常%hNomalCursor% if (hNomalCursor=hCursor) ControlSend,, -, SAI ahk_class sfl_window_class } } } return } ;////////////////////////////////////////////////////////// ;キー設定 ;////////////////////////////////////////////////////////// #IfWinActive, SAI - ;通常 Z::ToggleTrans(0) ;透明 C::ToggleTrans(1) ;Space::ToggleTrans(1) ;////////////////////////////////////////////////////////// #IfWinActive ;Esc::exitapp ; テスト用 }} - 自分用に作ったので載せておきます -- 名無し (2009-12-22 12:13:26) - GetCursorでやろうとしたけど、SAIのカーソルはハンドルが毎回変わるので無理でした。カーソルハンドル値は、消しゴム>通常なので、今の方法と組み合わせれば使えるかも。 -- 名無し (2009-12-22 12:24:15) - パネル類を非表示にしていても動作するようにした -- 名無し (2009-12-26 07:25:39) #comment(,disableurl)
スクリプト名 :HkSaiTransparency 用途   :1キートグル仕様の「描画色/透明色」の切替を2つのキーに分割して設定できます 動作環境 : / Win7x64 / SAI 1.1.0 / AutoHotKey Version 1.0.48.05 / Wacom Intuos2 Driver 6.1.2-4 - 自分用に作ったので載せておきます -- 名無し (2009-12-22 12:13:26) - GetCursorでやろうとしたけど、SAIのカーソルはハンドルが毎回変わるので無理でした。カーソルハンドル値は、消しゴム>通常なので、今の方法と組み合わせれば使えるかも。 -- 名無し (2009-12-22 12:24:15) - パネル類を非表示にしていても動作するようにした -- 名無し (2009-12-26 07:25:39) - 起動時チェック追加 -- 名無し (2010-01-19 01:44:06) - カーソル検出を強化 -- 名無し (2010-02-26 05:47:38) #comment(,disableurl) #highlight(lisp){{ ;////////////////////////////////////////////////////////// ; HkSaiTransparency ; 1キートグル仕様の通常/透過モードを2つのキーに分割して設定できます ; ; 無保証・再配布・改変自由 ; ; 動作 AutoHotKey 1.0.48.05 ;    SAI 1.1.0 ; ; ; 使用法 ; スクリプトを起動したら、 ; 1.ツールパレットを表示させ ; 2.適当なブラシを選択し ; 3.開いているSAIファイルのキャンバスの上にマウスカーソルを乗せてください ; 4.スクリプトがブラシのマウスカーソルを認識し、動作を開始します ; ; Z 通常ブラシ ; C 透明ブラシ ; ; このソースの最下部にある、キー設定の部分を変更すれば ; お好みのキーに割り当てられます。 ; ; 2010-02-26 標準カーソルのハンドルが1000以下の場合検出失敗するのを修正。 ; 2010-01-10 起動時カーソル確認待機 ; 2009-12-26 ; ツールパネル消してても動作するように(マウスカーソル判定) ; 2009-12-22 ; 初版 ; ;////////////////////////////////////////////////////////// ; 設定 /////////////////////////////////////////////////// ;////////////////////////////////////////////////////////// ; デバッグモード ; 設定: ; 0 ... オフ ; 1 ... オン DebugMode=0 ;////////////////////////////////////////////////////////// ;設定ここまで //////////////////////////////////////////// ;////////////////////////////////////////////////////////// #MaxThreads 1 #MaxThreadsPerHotkey 1 #SingleInstance IGNORE #HotkeyInterval 1000 ; This is the default value (milliseconds). #MaxHotkeysPerInterval 50 ; This is the default value. ;Menu, Tray,Icon, B:\settings\icon\brack_white.ico ;初期化 MsgBox, 4160, , SAIを起動してブラシを選択し、キャンバスの上にカーソルを乗せてください。 WinActivate SAI ahk_class sfl_window_class sleep, 1000 curErrCnt:=0 Loop{ TA_SAI:="SAI ahk_class sfl_window_class" hSAI:=WinExist(TA_SAI) If WinActive(TA_SAI){ If(CheckChecker()=1){ ControlSend,, -, SAI ahk_class sfl_window_class } hNomalCursor:=GetCursor(hSAI) minCursor:=1000-((curErrCnt)*100) if (hNomalCursor>minCursor){ tooltip 通常 %hNomalCursor% 動作開始 break }else{ tooltip %minCursor% > 通常 %hNomalCursor% curErrCnt:=curErrCnt+1 } } sleep,500 } sleep,500 tooltip, return GetCursor(HWND){ mytid:=DllCall("kernel32.dll\GetCurrentThreadId","UInt") targettid:=DllCall("user32.dll\GetWindowThreadProcessId","UInt",HWND,"UInt",0,"UInt") if(mytid==targettid){ hcursor:=DllCall("user32.dll\GetCursor","Short") }else{ DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",-1) hcursor:=DllCall("user32.dll\GetCursor","Short") DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",0) } return hcursor } CheckChecker(){ ;ツールウィンドウの位置 WinGetPos, ToolX, ToolY, , , ツール ahk_class sfl_window_class ;透過取得 WinGet, transLay , Transparent, ツール ahk_class sfl_window_class if(( !ToolX && !ToolY) or !transLay ){ ;tooltip, ツールウィンドウがないよ! return -1 } ;座標モード変更 CoordMode Pixel,Screen CoordMode Tooltip,Screen ;選択色ボックスの位置 ControlGetPos, X, Y, , , sfl_window_class1, ツール ;透過状況表示箱の位置 GetX:=ToolX+X+2 GetY:=ToolY+Y+34 ;sleep, 250 ;色取得 PixelGetColor, CheckerColor, GetX, GetY ;tooltip CheckerColor%CheckerColor% if (CheckerColor=0xFFE0E0) return 1 if (CheckerColor=0xFAFAFA) return 0 } ToggleTrans(GoTo){ Global DebugMode,hSAI,hNomalCursor Loop,1{ ;sleep, 250 ;色取得 ;PixelGetColor, CheckerColor, GetX, GetY EnableTrans:=CheckChecker() ;FFE0E0 erase if (GoTo=0) { ;通常にする If (EnableTrans=1) { ;通常にする ControlSend,, -, SAI ahk_class sfl_window_class if DebugMode Tooltip, %CheckerColor% 通常にする %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=0) { ;もう通常 if DebugMode Tooltip, %CheckerColor% もう通常 %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=-1) { ;カーソル判別モード hCursor:=GetCursor(hSAI) if DebugMode tooltip, 通常にする 今の%hCursor% 通常%hNomalCursor% if (hCursor!=hNomalCursor) ControlSend,, -, SAI ahk_class sfl_window_class } } if (GoTo=1){ ;透明にする If (EnableTrans=0) { ;透明にする ControlSend,, -, SAI ahk_class sfl_window_class if DebugMode Tooltip, %CheckerColor% 透明にする %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=1) { ;もう透明 if DebugMode Tooltip, %CheckerColor% もう透明 %GoTo% E %ErrorLevel%, GetX,GetY } If (EnableTrans=-1) { ;カーソル判別モード hCursor:=GetCursor(hSAI) if DebugMode tooltip, 透明にする 今の%hCursor% 通常%hNomalCursor% if (hNomalCursor=hCursor) ControlSend,, -, SAI ahk_class sfl_window_class } } } return } ;////////////////////////////////////////////////////////// ;キー設定 ;////////////////////////////////////////////////////////// #IfWinActive, SAI - ;通常 Z numpad1::ToggleTrans(0) ;透明 C numpad2::ToggleTrans(1) ;Space::ToggleTrans(1) ;~^F12::Reload ;////////////////////////////////////////////////////////// #IfWinActive ;Esc::exitapp ; テスト用 ;~^F12::Reload }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: