(AHK)(AutoHotkey)(そしてまた直後に更新)(下の記事の続きです)
前回のを書き込んだ直後に そういえば MtoDIB ってあったよね・・・・ と思い出し
ファイルに書き出さずに 直接 MtoDIBに渡してみたら・・・ おっ 出来た! 笑)
ついでに 塗りつぶす色も指定出来るようにしてみました
まあ AHKから バイナリデータを書き出すのは 別のところで使えばいいか・・・・
ファイルに書き出さずに 直接 MtoDIBに渡してみたら・・・ おっ 出来た! 笑)
ついでに 塗りつぶす色も指定出来るようにしてみました
まあ AHKから バイナリデータを書き出すのは 別のところで使えばいいか・・・・
;--------------------------------------------------------------------------------------------------------------------------------------------------------- ; imgctl_NewDIB(NewWidth, NewHeight, R, G, B) 新規にDIBを作成して hDIBを返します ;--------------------------------------------------------------------------------------------------------------------------------------------------------- ; 横:NewWidth 縦:NewHeight のサイズで 新規に DIBを生成します ; R G B に 輝度を設定する事で 塗りつぶす色を設定する事が出来ます ; 範囲 は 0(0x00)〜255(0xFF) の 範囲で指定してください ; 省略すると 255が 自動的にセットされます ; 「リサイズ処理の兼ね合い」か 結果が 指定した輝度から 1つ少なかったりする時があります ; ただ、全然 違う色になることは無いので 各自工夫してください 笑) ; 白(0xFF,0xFF,0xFF) や 黒(0x00,0x00,0x00) の場合は大丈夫です ; ; BMPファイルのイメージを生成して MtoDIBに渡すことで DIBを生成しています ; 生成に成功すると DIBのハンドルが、 失敗すると 0が返ってきます Imgctl_NewDIB(NewWidth, NewHeight, R = 255, G = 255, B = 255) { BinDataImage := "0x42,0x4D,0x3A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00," BinDataImage .= "0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00," BinDataImage .= "0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00," BinDataImage .= "0x00,0x00,0x00,0x00,0x00,0x00" VarSetCapacity(buf, 58, 0x00) Loop Parse, BinDataImage, CSV { NumPut((A_LoopField + 0), buf, (a_index - 1), "Char") } NumPut(B, buf, 54, "Char") NumPut(G, buf, 55, "Char") NumPut(R, buf, 56, "Char") NumPut(0x00, buf, 57, "Char") If !(buf2 := Imgctl_MtoDIB(&buf, 58)) Return 0 If Imgctl_ResizeDIB(buf2, NewWidth, NewHeight) { Return buf2 }Else{ Imgctl_DeleteDIB(buf2) Return 0 } } ;---------------------------------------------------------------------------------------------------------------------------------------------------------