2026-01-12,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)谙路?a href="#comment">留言或聯(lián)系老夜。[按鍵精靈]在屏幕上做輔助參考線(附源碼)
大家好,我是郭立員~,本文所講內(nèi)容僅供學(xué)習(xí)參考,請(qǐng)勿非法使用。
講三種屏幕上顯示參考線的方法,基本都是基于懸浮窗,細(xì)節(jié)略有不同。
第一種:懸浮窗+斜線透明背景圖
①、做兩張對(duì)角線的“透明圖”。

做兩張的原因是考慮兩個(gè)點(diǎn)之間連線可能是左上方向,也可能是右上方向。這個(gè)需要通過(guò)坐標(biāo)大小來(lái)決定選擇哪張背景圖。
②、懸浮窗的背景圖會(huì)根據(jù)懸浮窗大小縮放,所以圖片尺寸沒(méi)有具體要求,看著弄就行。
③、雖然懸浮窗是透明背景,但是鏤空部分只能看見(jiàn),不能點(diǎn)擊,所以這個(gè)懸浮窗顯示幾秒就要關(guān)閉。
難點(diǎn):比較坐標(biāo)大小,確定背景圖,確定懸浮窗的起始位置坐標(biāo)和寬高。
源碼:
PutAttachment?"/sdcard/pictures/",?"左下方.png"PutAttachment?"/sdcard/pictures/",?"右下方.png"Dim?x1?=?193Dim?y1?=?800Dim?x2?=?670Dim?y2?=?503Dim x, yIf x1 < x2?Then?? ??x?=?x1Else?? ??x?=?x2End IfIf y1 < y2?Then?? ??y?=?y1Else?? ??y?=?y2End IfDim?w?=?Abs(x2 - x1)Dim?h?=?Abs(y2 - y1)Dim pic_path?If x1 < x2 and y1 < y2?Then?? ??pic_path?=?"/sdcard/pictures/右下方.png"Else?? ??pic_path?=?"/sdcard/pictures/左下方.png"End IfFW.NewFWindow("浮窗名", x, y, w, h)FW.SetPicture("浮窗名", pic_path)FW.Show("浮窗名")Dim 顯示時(shí)間 =?5For?i?=?1?To 顯示時(shí)間? ? ShowMessage?"顯示倒計(jì)時(shí):"?& 顯示時(shí)間 - i? ? Delay?1000NextFW.Close ("浮窗名")
第二種:懸浮窗+按鈕點(diǎn)陣
上面的方法需要制作透明的斜線圖片,還要通過(guò)附件把圖片放到設(shè)備當(dāng)中,相對(duì)麻煩點(diǎn),這種按鈕點(diǎn)陣的方法就不需要準(zhǔn)備圖片了。
按鈕點(diǎn)陣其實(shí)就是用按鈕當(dāng)做像素點(diǎn),然后由多個(gè)像素點(diǎn)組成一條直線。
難點(diǎn)是由點(diǎn)到線的計(jì)算,包括左上方向和右上方向。
源碼:
Dim?x1 =?300Dim?y1 =?100Dim?x2 =?550Dim?y2 =?200Dim?x, yIf?x1 < x2 Then?? ??x?= x1Else?? ??x?= x2End?IfIf?y1 < y2 Then?? ??y?= y1Else?? ??y?= y2End?IfDim?w = Abs(x2 - x1)Dim?h = Abs(y2 - y1)If?w =?0?Then?? ??w?=?3?End?IfIf?h =?0?Then?h?=?3End?IfFW.NewFWindow("浮窗名", x, y, w, h)FW.Opacity?"浮窗名",?0If?w > h Then?? ??For?i =?1?To w Step?3? ? ? ??FW.AddButton("浮窗名",?"點(diǎn)陣"&i,?"", i, Abs(y-y1 +int(i*h/w)) ,?5,?5)? ? ? ??FW.SetBackColor?"點(diǎn)陣"?& i,?"0000FF"? ? ? ??FW.Show ("浮窗名")? ??NextElse?? ??For?i =?1?To h Step?3? ? ? ??FW.AddButton("浮窗名",?"點(diǎn)陣"&i,?"", Abs(x-x2 + int(i*w/h)) , i ,?5,?5)? ? ? ??FW.SetBackColor?"點(diǎn)陣"?& i,?"0000FF"? ? ? ??FW.Show ("浮窗名")? ??NextEnd?IfDim?顯示時(shí)間 =?5For?i =?1?To 顯示時(shí)間? ??ShowMessage?"顯示倒計(jì)時(shí):"?& 顯示時(shí)間 - i? ??Delay?1000NextFW.Close ("浮窗名")
第三種:
上面兩個(gè)方法有個(gè)弊端就是懸浮窗看上去是透明的區(qū)域,但是不能點(diǎn)擊操作,遮蓋了底下的屏幕內(nèi)容。
下面說(shuō)的方法是以懸浮窗為點(diǎn)陣,這種方式的缺點(diǎn)是最多32個(gè)懸浮窗,也就是最多3個(gè)點(diǎn),但是我測(cè)試太多個(gè)懸浮窗直接掉連接,所以使用20個(gè)懸浮窗做線(虛線)。
源碼
Dim?x1 =?300Dim?y1 =?40Dim?x2 =?600Dim?y2 =?500Dim?w = (x2 - x1) /?20Dim?h = (y2 - y1) /?20For?i =?1?To?20? ??FW.NewFWindow("浮窗名"&i, x1+int(i*w), y1+int(i*h),?10,?10)? ??FW.SetBackColor("浮窗名"&i,?"0000FF")? ??FW.Show("浮窗名"&i)NextDim?顯示時(shí)間 =?5For?i =?1?To 顯示時(shí)間? ??ShowMessage?"顯示倒計(jì)時(shí):"?& 顯示時(shí)間 - i? ??Delay?1000NextFW.Close ("浮窗名")
=正文完=
更多內(nèi)容可以查看往期文章
收費(fèi)解答按鍵精靈安卓版的問(wèn)題,有需要可以聯(lián)系我
我的QQ:453485278
按鍵QQ群11群:936858410
微信(xiaomu86119),或掃下方二維碼:

夜雨聆風(fēng)
