用按鍵精靈畫點

2012-09-08 3:25 pm
原因很簡單,因為按鍵精靈沒有自帶繪圖的功能

原先想使用【Windows的API】來做,但測試了幾次都不成功,不知道問題出在哪.安裝好按鍵精靈後,有調用API的【範例腳本】,

畫面是這樣:
https://dl.dropbox.com/u/29341370/%E7%9F%A5%E8%AD%98%E5%8A%A0/API.bmp
該腳本下載:
https://dl.dropbox.com/u/29341370/%E7%9F%A5%E8%AD%98%E5%8A%A0/%E8%AA%BF%E7%94%A8API%E6%BC%94%E7%A4%BA.Q

或者新版的按鍵精靈可以【調用VBS執行塊】,用這來寫也可以.調用VBS的方法如下:
https://dl.dropbox.com/u/29341370/%E7%9F%A5%E8%AD%98%E5%8A%A0/qm_201298_5.jpg

有辦法以此做出基本的繪圖指令嗎?像是畫線,畫圓等等...或是有人可以做出速度快的畫【點】插件或sub副程式,我再來用點去發展線和面的指令.

寫好的指令希望能畫圖在指定的視窗上,形式會像這樣
ret=DrawPoint(hwnd,x,y,color) 意思是在視窗句柄hwnd的視窗上,客戶區座標x,y的位置,畫一個點,color是顏色的16進位表示法,例如"0000FF"即為紅色.返回值ret=0代表畫點失敗,1代表成功.
更新1:

附上【WindowsAPI函數大全】以利查詢.試過其中的MoveToEx, LineTo, SetPixel都沒成功.真困難. https://dl.dropbox.com/u/29341370/%E7%9F%A5%E8%AD%98%E5%8A%A0/WindowsAPI%E5%87%BD%E6%95%B8%E5%A4%A7%E5%85%A8.rar

更新2:

最新版按鍵精靈 http://sync.hamicloud.net/_oops/asdf121472/u2z

更新3:

https://dl.dropbox.com/u/29341370/%E7%9F%A5%E8%AD%98%E5%8A%A0/3.1229.rar 這是用【大漠插件】所寫的示範, 但缺點是必須先用它的【CreateFoobarRect】函數創建一個視窗, 然後才能繪圖在該視窗中(函數用法請參閱資料夾中的 3.1229\大漠函數說明\Foobar\CreateFoobarRect ).

更新4:

請先導入腳本到按鍵精靈, 不要製作成小精靈, 用按鍵精靈直接執行測試. Anyway, 還是希望能指定一個任意的視窗, 然後繪圖在該視窗內, 這樣才不會因為移動視窗位置而失去相對應的關係.

更新5:

(例如要在視窗內的地圖上, 畫上設定的位置點與移動路線, 所以所畫的圖形要隨視窗移動.).

更新6:

以上的示範程式執行起來會像這樣: http://sync.hamicloud.net/_oops/asdf121472/kjs

回答 (3)

2012-09-09 10:57 pm
✔ 最佳答案
//1:(支持3種調用方法):
....
//2:(支持3種調用方法):
....

看到這個嗎?
使用API函數先要先聲明API函數
否則會有形態不符合的錯誤提示
你有沒有聲明了再用?

你想圓形隨視窗移動而且是前台就
用圓形的圓心在窗口客戶區內的座標
加窗口左上角的座標呀
畫圓公式:
x0=中心點x坐標:y0=中心點y坐標
//x0=客戶區內圓心的座標+(你要循環取得-->)窗口左上角的座標
l=兩點間距離:n=0:r=半徑
While n<3.1415926*2
x=x0+r*cos(n)
y=y0-r*sin(n)
MoveTo x,y
Delay 10
//LeftClick 1
n=n+l/r
Wend

2012-09-10 01:19:51 補充:
crColor As Long
Long係長整形
即係係整數數字
用000FF當然會報錯...
或者你改成string試試...
API我不太清楚...
2012-09-10 12:24 am
感謝神大大,我有宣告,使用SetPixel 但不確定crColor這個顏色的表示方法為何?能否詳述.我使用16進位的表示法例如0000FF會有錯誤,123456不會有錯誤,但是返回值是-1代表不成功,此外我要的是後台,它能直接繪畫在視窗上面,就像我所附的示範程式一樣.能夠實做一個腳本讓我來操考嗎?我的失敗腳本如下:

2012-09-09 16:25:39 補充:
Public Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
hdc = Plugin.Window.MousePoint()
RET=SetPixel(hdc, x, y,123456)
MessageBox RET
Do

Loop

2012-09-09 16:47:59 補充:
不然來縮小問題的範圍好了, 其他都先不討論, 就如前述, 目的就是要產生一個指令, ret=DrawPoint(hwnd,x,y,color) , 參數hwnd,x,y,都是整數, hwnd是我們想要畫點在上面的視窗的句柄. x,y是以該視窗左上頂點為原點, 而color就是指定該點顏色的BGR16進位值, 譬如0000FF就是紅色. ret是返回值,ret=1代表成功,ret= -1代表失敗.
2012-09-09 9:55 pm
妙地大 感恩喔~~近來可好?


收錄日期: 2021-04-30 21:02:30
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20120908000010KK01200

檢視 Wayback Machine 備份