找回密码
 加入
搜索
查看: 25087|回复: 52

[AU3基础] GUICtrlCreatePic控件中的图片如何居中显示[已解决]

 火... [复制链接]
发表于 2010-7-4 19:50:27 | 显示全部楼层 |阅读模式
本帖最后由 anchie 于 2010-8-8 15:06 编辑

最近在些一个系统设置工具
遇到了一点麻烦
就是GUICtrlCreatePic控件中的图片如何居中显示
请教高手解决!
 楼主| 发表于 2010-7-4 19:53:14 | 显示全部楼层
补充一下 ,图片是随机显示的 有的图片大 有的图片小,就是想让图片在无论大小的情况下 不改变图片的大小而可以达到居中的效果
意思就是说即使图片比GUICtrlCreatePic小的话 也可以居中显示。
 楼主| 发表于 2010-7-4 23:23:05 | 显示全部楼层
郁闷 没有人给我解答这个问题吗?
发表于 2010-7-4 23:29:48 | 显示全部楼层
本帖最后由 afan 于 2010-7-4 23:32 编辑
...不改变图片的大小而可以达到居中的效果 ...
anchie 发表于 2010-7-4 19:53



    不改变图片的大小 -- 这个够呛,如果图片超出显示器,那Gui就找不着北了...

不改变宽高比还差不多,对图片进行缩放(或仅缩小大图片),以填满整个图片控件
 楼主| 发表于 2010-7-5 12:33:19 | 显示全部楼层
这样不行 填充整个图片控件 那也不用发帖上来问了
 楼主| 发表于 2010-7-5 12:35:33 | 显示全部楼层
回复 4# afan


    能不能这样 如果图片比控件大的话 那就填充跟控件一样大小  如果图片比控件小 那就居控件中间显示。
发表于 2010-7-5 12:37:05 | 显示全部楼层
那不就是我4#的意思…
(或仅缩小大图片)
发表于 2010-7-5 13:10:55 | 显示全部楼层
有afan在!什么问题都能解决的!
 楼主| 发表于 2010-7-5 13:18:15 | 显示全部楼层
回复 7# afan


    关键是 如何让图片比控件小的图片居中,afan大哥请帮一下。
发表于 2010-7-5 13:20:43 | 显示全部楼层
回复 8# hzxymkb


    嘘,当心别人笑掉大牙~ 我最大的能耐就是和广告贴做持久战~! 别的,别和我比菜~~~
发表于 2010-7-5 13:22:57 | 显示全部楼层
回复  afan


    关键是 如何让图片比控件小的图片居中,afan大哥请帮一下。
anchie 发表于 2010-7-5 13:18


获取图片尺寸,计算并调整图片控件尺寸及坐标,大概这样就OK了
发表于 2010-7-5 13:23:54 | 显示全部楼层
回复 10# afan
高手都是谦虚的!
我专门查水,发现afan真是高人!
能不能收我 为徒呀?
发表于 2010-7-5 13:41:23 | 显示全部楼层
;;不知道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
发表于 2010-7-5 14:57:19 | 显示全部楼层
回复 12# hzxymkb


    我才来这坛1个月左右,afan给我印象最深,我也想拜师!
发表于 2010-7-5 16:37:46 | 显示全部楼层
最近理解能力出了点问题。可能理解错了楼主的意思了。
看看这个代码可以吗?
#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[1]
        $Height = StringStripWS($size[2], 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

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 00:56 , Processed in 0.085012 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表