「SAI ブラシテクスチャ 配布 掲示板」の検索結果
「マニュアル/Tips一覧/AutoHotKey/描画色・透明色を2つのキーに割り当て」
から
次の単語がハイライトされています :
;//////////////////////////////////////////////////////////
; 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