Hallo, ich brauch schon wieder eure Hilfe
Ich hab ein kleines Script geschrieben, bei dem Bilder untereinander angezeigt werden.. nun bräuchte ich von euch vorschläge, wie ich mein GUI am besten "Designen" kann...
Ich schreib euch mal das Script:
[autoit]
#include <GUIConstantsEx.au3>
#Include <Array.au3>
;~ $iFile = FileOpenDialog("Bitte ein Bild selektieren", "", "Bild (*.jpg;*.png;*.bmp;*.gif)")
;~ $split = StringSplit ( $iFile, "\")
;~ $pfad = ""
;~ For $i=1 To $split[0] - 1
;~ $pfad=$pfad&"\"&$split[$i]
;~ Next
;~ $pfad = StringTrimLeft($pfad,1)
$Folder = FileSelectFolder ( "Bilderordner wählen", @DesktopDir)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]$base_w = 150
$base_h = 150
$hGUI_w = @DesktopWidth-10
$hGUI_h = @DesktopHeight-70
$button_w = 100
$hGUI = GUICreate("", $hGUI_w, $hGUI_h)
$button = GUICtrlCreateButton("Exit", $base_w + ($hGUI_w - $base_w - $button_w ) / 2, $hGUI_h / 2 - 12, $button_w)
GUISetState()
Func GetImageDim($file) ;code by Melba23 - modified by UEZ
Local $sFile = StringRegExp($file, "(?i).*\\(.*)", 3)
If Not IsArray($sFile) Or @error Then Return SetError(1, 0, 0)
Local $sPath = StringRegExp($file, "(?i)(.*)\\.+", 3)
If Not IsArray($sFile) Or @error Then Return SetError(1, 0, 0)
Local $sDimensions = ""
Local $oShellApp = ObjCreate("shell.application")
If IsObj($oShellApp) Then
Local $oDir = $oShellApp.NameSpace($sPath[0])
If IsObj($oDir) Then
Local $oFile = $oDir.Parsename($sFile[0])
If IsObj($oFile) Then
If @OSBuild > 6000 Then
$sDimensions = $oDir.GetDetailsOf($oFile, 31)
ElseIf @OSVersion = "WIN_XP" Then
$sDimensions = $oDir.GetDetailsOf($oFile, 26)
EndIf
EndIf
EndIf
EndIf
If $sDimensions = "" Then Return SetError(1, 0, 0) ;"Object creation failed"
Local $aDimensions = StringRegExp($sDimensions, "(?i)[\d]*x*[\d]", 3)
If Not IsArray($aDimensions) Then Return SetError(1, 0, 0) ;"Cannot get image resolution!"
Return SetError(0, 0, $aDimensions)
EndFunc
Func CreatePic($iFile, $picbaseY = 10, $picbaseX = 10)
$iD = GetImageDim($iFile)
$iW = $iD[0]
$iH = $iD[1]
If @error Then Exit
If $iW < $base_w And $iH < $base_h Then
$posPicX = $base_w / 2 - $iW / 2
$posPicY = $base_h / 2 - $iH / 2
$PicCID=GUICtrlCreatePic($iFile, $posPicX + $picbaseX, $posPicY + $picbaseY, $iW, $iH)
Else
If $iW > $iH Then
$f = $iW / $base_w
$w = $iW / $f
$h = $ih / $f
Else
$f = $iH / $base_h
$w = $iW / $f
$h = $ih / $f
EndIf
$posPicX = $base_w / 2 - $w / 2
$posPicY = $base_h / 2 - $h / 2
$PicCID=GUICtrlCreatePic($iFile, $posPicX + $picbaseX, $posPicY + $picbaseY, $w, $h)
EndIf
Return $PicCID
EndFunc
;*.jpg;*.png;*.bmp;*.gif
Func SearchExt($ext)
$search = FileFindFirstFile($Folder&"\*."&$ext)
$all=""
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$all = $all &"|"& $file
WEnd
$all = StringTrimLeft($all, 1)
$all = StringSplit($all,"|")
_ArrayDelete($all,0)
Return $all
EndFunc
#Region Search Pictures
$jpgarray = SearchExt("jpg")
$bmparray = SearchExt("bmp")
$pngarray = SearchExt("png")
$gifarray = SearchExt("gif")
_ArrayConcatenate($jpgarray, $bmparray)
_ArrayConcatenate($jpgarray, $pngarray)
_ArrayConcatenate($jpgarray, $gifarray)
$PicFiles = $jpgarray
#Endregion Search Pictures
While _ArraySearch($PicFiles,"") <> -1
$nullarray = _ArraySearch($PicFiles,"")
If $nullarray <> -1 Then
_ArrayDelete($PicFiles,$nullarray )
EndIf
Wend
_ArrayInsert($PicFiles,0 ,UBound($PicFiles))
;_ArrayDisplay($PicFiles)
$loop=0
$status=GUICtrlCreateLabel($loop&" von "&$PicFiles[0]&" geladen",3,3,300)
$indexid=0
Dim $PicCIDs[$PicFiles[0]]
For $i=10 To ($PicFiles[0])*160 Step 160
GUICtrlSetData($status,$loop+1&" von "&$PicFiles[0]&" geladen")
$loop=$loop+1
$PicCIDs[$indexid]=CreatePic($Folder&"\"&$PicFiles[$loop], $i)
$indexid=$indexid+1
Next
;_ArrayDisplay($PicCIDs)
Do
Switch GUIGetMsg()
Case -3, $button
GUIDelete($hGUI)
Exit
EndSwitch
Until False
Einfach starten und einen Ordner mit bildern auswählen..
Hoffe ich könnt mir vorschläge bringen
MfG
PS: Vorschläge mein ich in dem sin, wie ich das am besten mit den Scrollbalken lösen kann :pinch: