GUICtrlCreatePic控件中的图片如何居中显示[已解决]
本帖最后由 anchie 于 2010-8-8 15:06 编辑最近在些一个系统设置工具
遇到了一点麻烦
就是GUICtrlCreatePic控件中的图片如何居中显示
请教高手解决! 补充一下 ,图片是随机显示的 有的图片大 有的图片小,就是想让图片在无论大小的情况下 不改变图片的大小而可以达到居中的效果
意思就是说即使图片比GUICtrlCreatePic小的话 也可以居中显示。 郁闷 没有人给我解答这个问题吗? 本帖最后由 afan 于 2010-7-4 23:32 编辑
...不改变图片的大小而可以达到居中的效果 ...
anchie 发表于 2010-7-4 19:53 http://www.autoitx.com/images/common/back.gif
不改变图片的大小 -- 这个够呛,如果图片超出显示器,那Gui就找不着北了...
不改变宽高比还差不多,对图片进行缩放(或仅缩小大图片),以填满整个图片控件 这样不行 填充整个图片控件 那也不用发帖上来问了 回复 4# afan
能不能这样 如果图片比控件大的话 那就填充跟控件一样大小如果图片比控件小 那就居控件中间显示。 那不就是我4#的意思…(或仅缩小大图片) 有afan在!什么问题都能解决的!{:face (411):} 回复 7# afan
关键是 如何让图片比控件小的图片居中,afan大哥请帮一下。 回复 8# hzxymkb
嘘,当心别人笑掉大牙~ 我最大的能耐就是和广告贴做持久战~! 别的,别和我比菜~~~ 回复afan
关键是 如何让图片比控件小的图片居中,afan大哥请帮一下。
anchie 发表于 2010-7-5 13:18 http://www.autoitx.com/images/common/back.gif
获取图片尺寸,计算并调整图片控件尺寸及坐标,大概这样就OK了 回复 10# afan
高手都是谦虚的!{:face (411):}
我专门查水,发现afan真是高人!
能不能收我 为徒呀? ;;不知道Lz是不是这个意思
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 640, 480, -1, -1,$WS_SIZEBOX+$WS_MINIMIZEBOX+$WS_MAXIMIZEBOX)
GUISetState(@SW_SHOW)
GUICtrlCreatePic("setup.jpg",-1,-1,639,460)
GUICtrlSetResizing(-1, 128)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd 回复 12# hzxymkb
我才来这坛1个月左右,afan给我印象最深,我也想拜师!{:face (411):} 最近理解能力出了点问题。可能理解错了楼主的意思了。
看看这个代码可以吗?#include <array.au3>
#include <file.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $f, $shell, $s, $i
Local $path = @MyDocumentsDir & "\My Pictures\"
Local $xfile = _FileListToArray($path, "*.jpg")
Local $file, $size
$Form1 = GUICreate("Form1", 639, 460, -1, -1, $WS_SIZEBOX + $WS_MINIMIZEBOX + $WS_MAXIMIZEBOX)
$jpg = GUICtrlCreatePic("", -1, -1, 639, 460)
GUISetState()
For $i = 1 To UBound($xfile) - 1
$file = $path & $xfile[$i]
getWH()
$size = StringSplit($s, "x")
$Width = $size
$Height = StringStripWS($size, 1)
GUICtrlSetImage($jpg, $file)
If $Width > 639 Then
GUICtrlSetPos($jpg, 639 - $Width, -1, $Width, $Height)
If $Height > 460 Then GUICtrlSetPos($jpg, -1, 460 - $Height, $Width, $Height)
Else
GUICtrlSetPos($jpg, (639 - $Width) / 2, 0, $Width, $Height)
If $Height > 460 Then GUICtrlSetPos($jpg, 0, 460 - $Height, $Width, $Height)
EndIf
Sleep(2000)
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func getWH()
$o = ObjCreate("scripting.filesystemobject")
$f = $o.GetFile($file)
$shell1 = ObjCreate("Shell.Application")
$shell = $shell1.Namespace($f.ParentFolder.Path)
$s = $shell.GetDetailsOf($shell.Items.Item($f.Name), 26)
EndFunc ;==>getWH