本人最近做了一个带进度条和gif动画的倒计时窗体,是在分辨率为1920*1080下制作的,生成后控件全部在指定位置,但是在不同分辨率下,gif控件、进度条都不会在相对居中位置显示,请教论坛大神,如何在不同分辨率下gif和进度条、提示文字都居中?最小分辨率为1024*768。可能表达的不太准确,我的意思是在最小分辨率为1024*768下,进度条、提示文字都能显示出来
这是我在1920*1080分辨率下的效果
这是我在1024*768分辨率下的效果,显示不出提示文字和进度条
au3代码;具体的疑问在代码标注中已写出#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Dim $width=1924;自定义窗体宽度
Dim $height=1084;自定义窗体高度
$handle_gif = GUICreate("Form1", $width, $height, (@DesktopWidth-$width)/2,(@DesktopHeight-$height)/2, $ws_popup);窗体居中显示
GUISetBkColor(0x000000)
_WinAPI_SetLayeredWindowAttributes ($handle_gif, 0x010101,190)
$Obj_gif = ObjCreate("AniGIFCtrl.AniGIF") ;创建GIF对象
$id_ctrl_gif = GUICtrlCreateObj($Obj_gif, 1, 62, 1920,960) ;创建gif播放控件,1,62 分别为距离左边和上边的像素
GUISetState(@SW_SHOW)
$Obj_gif.ReadGIF("Honeycam .gif") ;gif动画path。全路径,相对路径均可
GUICtrlSetState(-1, $gui_disable)
$Obj_gif.Speed=1 ;播放速度。1-正常;数字增大速度变慢;
$Obj_gif.Play ;播放
;$Obj_gif.stop ;停止
Global $time = 240;240为倒计时秒数;如果有能力也可以写为几分几秒,可是我不会了
#Region ### START Koda GUI section ### Form=
$Label6 = GUICtrlCreateLabel("为了你的健康,主人你该起身活动3分钟了!!", 670, 10, 800,25);这是上方提示文字
GUICtrlSetColor($Label6, 0xFFFFFF)
GUICtrlSetFont($Label6, 20)
$Label5 = GUICtrlCreateLabel($time & "秒后你就可以开始工作了!", 720, 1034, 600,25);这是倒计时提示文字
GUICtrlSetColor($Label5, 0xFF0000)
GUICtrlSetFont($Label5, 20)
$Progress1 = GUICtrlCreateProgress(650, 1065, 500, 10);这是进度条
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
AdlibRegister("_timer", 1000)
Func _timer()
$time -= 1
GUICtrlSetData($Label5,$time & "秒后你就可以开始工作了!!")
GUICtrlSetData($Progress1, (240 - $time) / 1)
If $time <= 0 Then Exit
EndFunc ;==>_timer
While 1
Sleep(100);为了减少cpu占用率写的代码,但是感觉没有毛用,刚开始依旧是黑屏
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Select
Case $nMsg = $GUI_EVENT_CLOSE
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $handle_gif, "int", 500, "long", 0x00090000)
Exit
Case $nMsg = $GUI_EVENT_PRIMARYDOWN
;AdlibRegister()
GUICtrlSetState($Progress1,$GUI_DISABLE )
EndSelect
WEnd
我把代码和附件全部上传,恳请群内大神支招。源码和图片压缩起来超过12兆了,只好分卷压缩了
|