发表回复 
GDIP库传递参数
2014-09-22, 23 : 51 (这个帖子最后修改于: 2014-11-06 12 : 08 by June.)
GDIP库传递参数
需要环境:GDIP库下载
声明:测试代码均为ScreenCapture.ahk自带的,相关链接
GDIP获取图片尺寸:链接

代码: (全选)
PicPath := "D:\aaaa.png"
pToken := Gdip_Startup() ; Start gdi+
        ; pBitmapAlpha := Gdip_CreateBitmapFromFile(PicPath)
        pBitmapAlpha := Gdip_BitmapFromScreen("0|0|200|200")

        ImgWidth := Gdip_GetImageWidth(pBitmapAlpha)  ; 获取宽度,高度,可省略
        ImgHeight := Gdip_GetImageHeight(pBitmapAlpha)

        Gdip_SaveBitmapToFile(pBitmapAlpha, PicPath,"255") ;第三个参数控制图片质量
        Gdip_DisposeImage(pBitmapAlpha)
        
Gdip_Shutdown(pToken) ; close gdi+
Traytip, 截图完毕:, 宽: %ImgWidth% 高: %ImgHeight%`n保存为: %PicPath%
return
问题:
代码: (全选)
Gdip_BitmapFromScreen("0|0|200|200")
传递参数改为变量,变量进去都变字符串了
代码: (全选)
MouseGetPos, xpos, ypos
能把xpos的变量内容,转换成字符串吗?

@robertL 提到拼接,应该如何写?


关键词:AHK截图函数,GDIP库,gdip.ahk,
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢June
2014-09-23, 07 : 57 (这个帖子最后修改于: 2014-09-23 14 : 12 by robertL.)
RE: GDIP库传递参数
指定范围截图+显示尺寸+保存至文件都正确了吧?
我运行上面的代码都正确。


字符串拼接
示例:
代码: (全选)
MouseGetPos, xpos, ypos
coordinates:=xpos "|" ypos "|" A_ScreenWidth-xpos "|" A_ScreenHeight-ypos    ;V1
coordinates:=0 "|" 0 "|" xpos "|" ypos    ;V1
;~ coordinates:="%xpos%|%ypos%|%A_ScreenWidth%|%A_ScreenHeight%"    ;V2 坐标计算错误 仅供参考
参见:手册-目录\基本用法和语\目录-变量和表达式- . 连接


GDI+手册(英文):发布帖GDI+ Manual (v1.43)(英文旧官网),可用下载链接在3楼某回帖中。
空了翻译..


另,论坛搜索中,使用gdip.ahk搜索词仍无法找到和帖子内放置关键词无关了,估计和gdip.ahk中的有关..
先可以尝试使用gdip AND .ahk作搜索词(条件变粗,结果变多),或者,用Google站内搜索site:ahk8.com gdip.ahk

本帖对应论坛QA,AHK中有截图函数不?

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-23, 14 : 07 (这个帖子最后修改于: 2014-09-23 14 : 13 by robertL.)
RE: GDIP库传递参数
用萝卜的传参为什么多余截出一大半黑的

折叠块 :
[Image: dzf2n7.jpg]

wiz,ahkscript,wiki,zhihu,ahk8,Github,多个QQ群,贴吧,
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-23, 14 : 12 (这个帖子最后修改于: 2014-09-23 14 : 12 by robertL.)
RE: GDIP库传递参数
@huyaowen 哦,参数错了(已更正),格式是 x | y | w | h

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-23, 16 : 34
RE: GDIP库传递参数
谢谢
加一句CoordMode,Mouse, Screen更好用了。

wiz,ahkscript,wiki,zhihu,ahk8,Github,多个QQ群,贴吧,
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢huyaowen
2014-09-24, 16 : 41
RE: GDIP库传递参数
可以改造下,做成象qq截图一样,可以取鼠标画框的尺寸。

wiz,ahkscript,wiki,zhihu,ahk8,Github,多个QQ群,贴吧,
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-24, 22 : 16
RE: GDIP库传递参数
(2014-09-24 16 : 41)huyaowen 提到:  可以改造下,做成象qq截图一样,可以取鼠标画框的尺寸。

想过,可QQ截图区域框有点难弄。(就时CTRL+ALT+A,显示的区域框)
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-24, 22 : 53 (这个帖子最后修改于: 2014-09-25 07 : 53 by robertL.)
RE: GDIP库传递参数
June ' 提到:  想过,可QQ截图区域框有点难弄。(就时CTRL+ALT+A,显示的区域框)
嗯,要画框,不过GDIP应该可以..
太强大,还没敢学习..

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-24, 23 : 09 (这个帖子最后修改于: 2014-09-24 23 : 10 by huyaowen.)
RE: GDIP库传递参数
(2014-09-24 22 : 16)June 提到:  
(2014-09-24 16 : 41)huyaowen 提到:  可以改造下,做成象qq截图一样,可以取鼠标画框的尺寸。

想过,可QQ截图区域框有点难弄。(就时CTRL+ALT+A,显示的区域框)

你说的是自动识别控件或窗体的那个框?还是按住鼠标画的那个框?

如果是前者,那不要紧,自动识别可以没有,完全不影响使用。
如果是后者,这个很需要,有现成的脚本可以画框,我看到过,应该也可以取得框的大小吧。可以试试。

wiz,ahkscript,wiki,zhihu,ahk8,Github,多个QQ群,贴吧,
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-24, 23 : 20 (这个帖子最后修改于: 2014-09-24 23 : 24 by June.)
RE: GDIP库传递参数
@robertL GDIP有画框的函数?
另GDIP截图的图片质量能用参数控制吗?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-25, 07 : 52
RE: GDIP库传递参数
June 提到:  @robertL GDIP有画框的函数?
另GDIP截图的图片质量能用参数控制吗?
功能全,应该都能,可以摸索下,
上面有个英文手册可借鉴,内容少,就是组织了下,有些实例,可参考。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-09-25, 12 : 30
RE: GDIP库传递参数
按住鼠标拖动选择一个透明范围的简单方法!
http://ahk8.com/thread-4930-post-32345.html#pid32345

wiz,ahkscript,wiki,zhihu,ahk8,Github,多个QQ群,贴吧,
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢huyaowen
2014-09-26, 19 : 45
RE: GDIP库传递参数
(2014-09-25 12 : 30)huyaowen 提到:  按住鼠标拖动选择一个透明范围的简单方法!
http://ahk8.com/thread-4930-post-32345.html#pid32345

这代码,附上库可以直接用了。
论坛也有现成的截图脚步:AHK截图命令行工具
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢June
2014-09-26, 22 : 42
RE: GDIP库传递参数
(2014-09-25 07 : 52)robertL 提到:  
June 提到:  @robertL GDIP有画框的函数?
另GDIP截图的图片质量能用参数控制吗?
功能全,应该都能,可以摸索下,
上面有个英文手册可借鉴,内容少,就是组织了下,有些实例,可参考。
代码: (全选)
Gdip_SaveBitmapToFile(pBitmapAlpha, PicPath,"255") ;第三个参数控制图片质量
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢June
2014-09-27, 01 : 08
RE: GDIP库传递参数
这个例子包含了鼠标选择一块区域并以透明方块标识的功能。
代码: (全选)
; Tuncay: I made small changes only.
; Thanks to tic for most of the demonstration script.
; #include regionGetColor.ahk
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
;region ;AutoExec; #######################################################################
#SingleInstance, Force
CoordMode, Mouse, Screen
MsgBox Press Alt+LeftMouseButton for selecting new area.`n`nPress Alt+r for rechecking that area and refreshing the gui.
RegionMain:
If !regionInit
{
   OnExit, Exit
   Gui, 1:+AlwaysOnTop +ToolWindow
   Gui, 1:Color, 0xffffff
   Gui, 1:Add, Edit, vGuiTextVar +ReadOnly h160 w180, Color: 0xffffff`nCount: `nTime: `n`n`n`n`n`n`n
   Gui, 1:Show, , regionColor
   Gui, 2:Color, 0xCCCCCC
   Gui, 2:+ToolWindow -Caption +Border +AlwaysOnTop +0x20 ; 0x20=click-thru
   Gui, 2:Add, Text, vGuiTextVar2 w80
   Gui, 2:+LastFound
   2GuiID := WinExist()
   Gui, 2:Show, X-2000 Y-2000 W1 H1
   WinSet, Trans, 150, ahk_id %2GuiID%
;   CoordMode, Mouse, Screen
   Process, Priority,, High
   SetBatchLines, -1
   SetWinDelay, -1
   RegionInit = 1
   GuiX := GuiY := 0
   GuiW := GuiH := 100
}
Gui, 1:Show
return
;end_region

;region ;Labels and Hotkeys; #############################################################
Esc::
Exit:
GuiClose:
   ExitApp

!LButton::
; use gui 2 to create a rectangle for area selection
   If !RegionInit
      GoSub RegionMain
   MouseGetPos, s_MSX, s_MSY, s_ID, s_CID, 2 ;start mouse X and Y
   WinSet, AlwaysOnTop, On, ahk_id %2GuiID%
   Loop
   {
      Sleep 20
      If !GetKeyState("LButton", "P")                  ;break if user releases the mouse
         Break  
      MouseGetPos, c_MSX, c_MSY                     ;current mouse X and Y
      GuiX := (s_MSX < c_MSX ? s_MSX : c_MSX)            ;use whichever smaller for X and Y
      GuiY := (s_MSY < c_MSY ? s_MSY : c_MSY)
      GuiW := Abs(Abs(s_MSX)-Abs(c_MSX))               ;doesn't matter which is bigger,
      GuiH := Abs(Abs(s_MSY)-Abs(c_MSY))               ;the absloute difference will be the same
      WinMove, ahk_id %2GuiID%,, GuiX, GuiY, GuiW, GuiH   ;move the window there
      GuiControl, 2:, GuiTextVar2, % GuiW ", " GuiH
   }
!r::               ;to retry at the last used coord.
   WinMove, ahk_id %2GuiID%,, GuiX, GuiY, GuiW, GuiH      ;to see where it's retrying
   Sleep 100
   WinMove, ahk_id %2GuiID%,, -2000,-2000, 2, 2          ;hide the window away
      WinGetPos, WinX, WinY, WinW, WinH, ahk_id %s_ID%
      ControlGetPos, CtrX, CtrY, CtrW, CtrH, , ahk_id %s_CID%
      regionInfo := "Relative to:`n   Screen: " GuiX "," GuiY
      regionInfo .= "`n   Window: " GuiX-WinX "," GuiY-WinY
      regionInfo .= "`n   Control: " GuiX-WinX-CtrX "," Guiy-WinY-CtrY
      regionInfo .= "`nWidth/Height: " GuiW "," GuiH
   Info1 := "RGB:`t"
   Color1 := regionGetColor(GuiX, GuiY, GuiW, GuiH) ;get the color of the region
   Time1 := "Time: " ErrorLevel
   Gui, 1:Color, %Color1%
   GuiControl, , GuiTextVar, % Info1 Color1 "`n`t" Time1 "`n`n" regionInfo
return
;end_region

  • AHK basic群:58806956
  • AHK advance群:3222783
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 2用户表示感谢Nigh
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合