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

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


スクリプト名 :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)
名前:
コメント:

;//////////////////////////////////////////////////////////
; 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
 
 

タグ:

���o�Q�[
+ タグ編集
  • タグ:
  • ���o�Q�[

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:1970年01月01日 09:00