Hallo
Gibt es einen Weg ein Bild mit AutoIt zu skalieren?
Hatte schon eine UDF gefunden _ImageResize Aber die hat das Bild nur verkleinert. Also einen Teil abgeschnitten. Aber ich möchte das Bild skalieren also das Bild beibehalten. (hoffe ihr wisst was ich mein)
Bild skalieren
-
- [ offen ]
-
jc_sactown -
27. Februar 2014 um 15:43 -
Erledigt
-
-
Ich hab dieses Problem mit IfranView und AutoIt gemeistert. Vorteile: IfranView braucht keine Install und unterstüzt Commandozeilen sprich man muss das Programm nicht mal starten.
Ich denke aber das die schlauen Köpfe hier dir bessere Lösungen zeigen werden (nur AutoIt). -
sowas?
geklaut!! credits to smashly
Spoiler anzeigen
[autoit]; #FUNCTION# =========================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _ImageResize
; Description....: Resize an image and optionally convert it to the format you want.
; Syntax.........: _ImageResize($sInImage, $sOutImage, $iW, $iH)
; Parameters ....: $sInImage - Full path to the image to resize / convert.
; In types: *.bmp, *.gif, *.ico, *.jpg, *.jpeg, *.png, *.tif, *.tiff
; $sOutImage - Full path where to save the resized / converted image.
; Out types: *.bmp, *.gif, *.jpg, *.jpeg, *.png, *.tif, *.tiff
; $iW - Width to resize image to.
; $iH - Height to resize image to.
; Return values .: Success - Return 1 and @error 0
; Failure - Return 0 and @error 1~5
; @error 1 = In File does not exist
; @error 2 = In File format not supported
; @error 3 = Out File path does not exist
; @error 4 = Out file format not supported
; @error 5 = Resize Width or Height not an integer
; Author ........: smashly
; ====================================================================================================
Func _ImageResize($sInImage, $sOutImage, $iW, $iH)
Local $sOP, $sOF, $sInExt, $Ext, $hBitmap, $hImage1, $hImage2, $hGraphic, $CLSID, $i = 0
Local $sType = "BMP|GIF|ICO|JPG|JPEG|PNG|TIF|TIFF"If Not FileExists($sInImage) Then Return SetError(1, 0, 0)
[/autoit] [autoit][/autoit] [autoit]
$sInExt = StringUpper(StringTrimLeft($sInImage, StringInStr($sInImage, ".", 0, -1)))
If Not StringRegExp($sInExt, "\A(" & $sType & ")\z", 0) Then Return SetError(2, 0, 0);OutFile path, to use later on.
[/autoit] [autoit][/autoit] [autoit]
$sOP = StringLeft($sOutImage, StringInStr($sOutImage, "", 0, -1))
If Not FileExists($sOP) Then Return SetError(3, 0, 0);OutFile name, to use later on.
[/autoit] [autoit][/autoit] [autoit]
$sOF = StringTrimLeft($sOutImage, StringInStr($sOutImage, "", 0, -1));OutFile extension , to use for the encoder later on.
[/autoit] [autoit][/autoit] [autoit]
$Ext = StringUpper(StringTrimLeft($sOutImage, StringInStr($sOutImage, ".", 0, -1)))
If Not StringRegExp($Ext, "\A(" & $sType & ")\z", 0) Or $Ext = "ICO" Then Return SetError(4, 0, 0)If Not IsInt($iW) And Not IsInt($iH) Then Return SetError(5, 0, 0)
[/autoit] [autoit][/autoit] [autoit]; WinAPI to create blank bitmap at the width and height to put your resized image on.
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _WinAPI_CreateBitmap($iW, $iH, 1, 32);Start GDIPlus
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup();Get the handle of blank bitmap you created above as an image
[/autoit] [autoit][/autoit] [autoit]
$hImage1 = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap);Load the image you want to resize.
[/autoit] [autoit][/autoit] [autoit]
$hImage2 = _GDIPlus_ImageLoadFromFile($sInImage);Get the graphic context of the blank bitmap
[/autoit] [autoit][/autoit] [autoit]
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1);Draw the loaded image onto the blank bitmap at the size you want
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage2, 0, 0, $iW, $iH);Get the encoder of to save the resized image in the format you want.
[/autoit] [autoit][/autoit] [autoit]
$CLSID = _GDIPlus_EncodersGetCLSID($Ext);Generate a number for out file that doesn't already exist, so you don't overwrite an existing image.
[/autoit] [autoit][/autoit] [autoit]
Do
$i += 1
Until (Not FileExists($sOP & $i & "_" & $sOF));Prefix the number to the begining of the output filename
[/autoit] [autoit][/autoit] [autoit]
;$sOutImage = $sOP & $i & "_" & $sOF
$sOutImage = $sOP & $sOF;Save the new resized image.
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ImageSaveToFileEx($hImage1, $sOutImage, $CLSID);Clean up and shutdown GDIPlus.
[/autoit]
_GDIPlus_ImageDispose($hImage1)
_GDIPlus_ImageDispose($hImage2)
_GDIPlus_GraphicsDispose($hGraphic)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_Shutdown()
Return SetError(0, 0, 1)
EndFunc ;==>_ImageResizeEdit Oscar: Bei längeren Quelltexten bitte zusätzlich den Spoiler-Tag benutzen. [eingefügt]
-
Ab 3.3.9.0:
_GDIPlus_ImageResize()
_GDIPlus_ImageScale()Gruß,
UEZ -
_GDIPlus_ImageScale wär wahrscheinlich das richtige hm.. hätte da jemand eine fertige funktion für mich bin noch nicht so weit in AutoIt
??komisch. bei mir gibts diese funktion gar nicht. _GDIPlus_ImageScale..
hab ich nich.
okay okay. :wacko:sorry. ab AutoIt .. ja erst lesen dann schreiben. Okay Danke
tut mir leid wenn ich diesen thread nochmal öffne. aber ich komm leider überhaupt nicht weiter.
hab mir die aktuelle version runtergeladen 3.3.10... um diese GDIfunctions zu bekommen. Möchte aber die alte version 3.3.6.1 behalten. Das neue SciTe gefällt mir auch überhaupt nicht.
hab den Include Ordner von der neuen version kopiert und bei der alten eingefügt. Bekomm ne ellenlange Fehlermeldung in der console. scheint irgendwas noch zu fehlen.
will aber da auch nicht lang rumpfuschen. gibts keine möglichkeit ein Bild zu skalieren in 3.3.6.1? irgendeine udf?
irfanview wär ne lösung aber wär schön wenn sich ne fremde exe in meinem programm vermeiden ließe.
Wäre sehr dankbar!lg, JCS
Edit Oscar: Bitte nicht 4 Posts hintereinander erstellen. Du kannst Deinen Beitrag bearbeiten, wenn Dir noch was einfällt.
-
Hast du die gepostete UDF probiert? weiss nicht ob die mit 3.3.6.x geht aber mit 3.3.8.x sollte es klappen
übrigens scite ist seit Jahren praktisch unverändert vom aussehen und Bedienung. Ich nehme mal an du magst die andere farbliche Darstellung nicht? Die kannst du ändern so das alles wider die alten Farben hat.
-
Hallo,
ich bin auch wieder vor dem Problem.. leider komm ich auch nicht weiter.
Hab mir jetzt die neueste Version (v3.3.10.2) gezogen..Was ich will:
ich hab einen Ordner ... in diesem befinden sich Bilder, (mit zum Teil unterschiedlichem Format)..
wenn ich auf einen Button drücke soll eines der Bilder auf der Gui angezeigt werden. Wird dann auf
das Bild gedrückt wird das Bild vergrößert dargestellt. Bisher hatte ich das so gelöst, das ich zwei
weitere Ordner (Thumbnail und Thumbnail2) erstellt hatte in dem ich die Verkleinerten Versionen (einmal
mit 80x 1xx und einmal mit 480x6xx) liegen hatte..reichlich unsmart !
Die Idee wäre jetzt keine Thumbnails mehr erstellen zu müssen sondern gleich die "Orginalbilder" zu verwenden
und diese dann skaliert auf der Gui anzuzeigen... also einmal mit 80x 1xx und beim Klick auf diese mit 480x6xx..was ich bisher habe:
[autoit]While 1
[/autoit][autoit][/autoit][autoit]
$msg = GUIGetMsg()
Select
case $msg = $cal
;~ Hier wird das Label zurückgesetzt
GUICtrlCreatePng($filepath_pic&$IniFileLine7,30,80)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,320,80)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,610,80)
......
EndSelect
WEnd;~ Bilder (klein) erstellen
[/autoit][autoit][/autoit][autoit]
Func GUICtrlCreatePng($filepath_pic, $iPNG_Left = 0, $iPNG_Top = 0)
_GDIPlus_Startup()Local $hImagePNG = _GDIPlus_ImageLoadFromFile($filepath_pic)
[/autoit][autoit][/autoit][autoit]
Global $iPNG_Width = _GDIPlus_ImageGetWidth($hImagePNG)
Global $iPNG_Height = _GDIPlus_ImageGetHeight($hImagePNG)
Local $hBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImagePNG)Local $cPNG_PIC = GUICtrlCreatePic("", $iPNG_Left, $iPNG_Top, $iPNG_Width, $iPNG_Height)
[/autoit][autoit][/autoit][autoit]
;~ MsgBox(0,"",$iPNG_Height & " " & $iPNG_Width)GUICtrlSendMsg($cPNG_PIC, 0x0172, 0, $hBmp)
[/autoit][autoit][/autoit][autoit]
_WinAPI_DeleteObject($hBmp)
_GDIPlus_ImageDispose($hImagePNG)
_GDIPlus_Shutdown()Return $cPNG_PIC
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
EndFunc ;==>GUICtrlCreatePngsomit werden die Bilder aber nur dargestellt.. in Orginalgröße..
wenn ich jetzt folgendes :
[autoit]
[/autoit]
Local $hBmp = _GDIPlus_ImageResize(_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImagePNG), 300,500)
Local $iPNG_faktor= $iPNG_Width/300
Local $iPNG_Height_res= $iPNG_Height/$iPNG_faktor
Local $iPNG_Width_res = $iPNG_Width/$iPNG_faktor
Local $cPNG_PIC = GUICtrlCreatePic("", $iPNG_Left, $iPNG_Top, $iPNG_Width_res, $iPNG_Height_res)in den Code (Funktion) integriere wird zwar die Darstellung auf zb. 300 Pixel Breite richtig erstellt, aber das Bild
wird nicht skaliert, sondern abgeschnitten !!habt ihr einen Tipp ?
Gruß Brick
-
Die Zeile
[autoit]
[/autoit]
Local $hBmp = _GDIPlus_ImageResize(_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImagePNG), 300,500)
mach so keinen Sinn, denn du übergibst der Funktion GDIPlus_ImageResize() ein GDI Handle und kein GDI+ Handle!Also das Bild vorher skalieren, in ein GDI Bild umwandeln und zum Pic Control schicken.
Gruß,
UEZ -
Die Zeile
[autoit]
[/autoit]
Local $hBmp = _GDIPlus_ImageResize(_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImagePNG), 300,500)
mach so keinen Sinn, denn du übergibst der Funktion GDIPlus_ImageResize() ein GDI Handle und kein GDI+ Handle!Hi,
ähmm.. Hä ??
sorry.. bin jetzt mit den ganzen GDI Zeug wirklich kein Profi.. aber da steht doch GDIplus_Imageresize (und GDIPlus_Bitmap...)
wieso erzeugt das GDIPlus_BitmapCreate.. kein GDI Plus Handle ??wieso heißt es dann so ??
sorry.. für die Laienhafte Frage... aber wie schon gesagt, das ganze GDI Zeug kapier ich noch nicht so ganz !
(gibts da eigentlich ein brauchbares Tutorial ?)
Gruß Brick
-
Probiere es mal damit:
[autoit]
[/autoit]
Local $hBmp = _GDIPlus_ImageResize($hImagePNG, 300,500) ;GDI+ Bitmap
Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp) ;GDI Bitmap!
Local $iPNG_faktor= $iPNG_Width/300
Local $iPNG_Height_res= $iPNG_Height/$iPNG_faktor
Local $iPNG_Width_res = $iPNG_Width/$iPNG_faktor
Local $cPNG_PIC = GUICtrlCreatePic("", $iPNG_Left, $iPNG_Top, $iPNG_Width_res, $iPNG_Height_res)
GUICtrlSendMsg($cPNG_PIC, 0x0172, 0, $hHBitmap)
_WinAPI_DeleteObject($hHBitmap)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_ImageDispose($hImagePNG)Gruß,
UEZ -
wow..
sieht an sich gut aus... (auch wenn ichs noch nicht ganz gerafft hab
)
werd mir jetzt mal GDIPlus_ImageScale anschauen, da das Bild so doch
je nach Auflösung stark verzerrt wird !Danke für die Unterstützung !
Gruß Brick
-
so,
ich lass es doch mit "Resize".. das funktioniert genau so wie ich es haben will !!
ABER: ich bekomm um das Bild so einen Rand.. Sieht aus wie $SS_SUNKEN ..
nur bekomm ich den nicht weg..kannst du mir einen Tipp geben: A; woher der kommt und B; wie ich den weg bekomme !
Gruß Brick
EDIT: wo der Rahmen jetzt herkommt, hab ich gefunden.. nur wie ich ihn wegbekomm noch nicht:
Der Rahmen kommt von meinem "leer.jpg" Bild.. immer wenn ein neues Bild erscheinen soll, blende ich
ein "leeres" Bild erst drüber.. dadurch entsteht dieser Rahmen.. -
jetzt hab ichs mal so versucht:
[autoit]local $test321 = _GDIPlus_GraphicsCreateFromHWND($Form1)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
local $test123 = _Gdiplus_GraphicsDrawImage ($test321,$hBmp,$iPNG_Left,$iPNG_Top);~ Local $cPNG_PIC = GUICtrlCreatePic("", $iPNG_Left, $iPNG_Top, $iPNG_Width_res, $iPNG_Height_res)
[/autoit][autoit][/autoit][autoit][/autoit]
;~ GUICtrlSendMsg($cPNG_PIC, 0x0172, 0, $hHBitmap)(das auskommentierte war das, was ich vorher drin hatte)
dann siehts so aus... (siehe Anhang)
etwas besser.. leider ist immer noch ein kleiner weißer Rand..
wenn ich die Grafik etwas größer mach, wird der Rand auch größer !
kann man den nicht entfernen ??
Gruß Brick
-
Brick,
vielleicht solltest du den vollständigen Code posten, damit wir korrigieren können. Nur Fragmente bringen nicht viel!
Gruß,
UEZ -
also den ganzen Code poste ich jetzt nicht, da auch viel unnützes Zeug (für euch) dabei ist..
[autoit]
aber das für die Bilder kann ich gern posten:
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
;Das ganze ist ein Geburtstagskalender, der mir an dem heutigen Tag die Info und ein Bild, von
;dem jenigen anzeigt, der Geburtstag hat. Über ein Datumsfeld kann man gezielt zu einem bestimmten
;Datum springen. Hier ein Teil des Codes...
;GUICtrlCreatePng springt in die Funktion GUICtrlCreatePng.. übergibt Filepath und "IniFileLine7", das ist ein Leeres Jpg
;um vorhergehende Bilder zu löschen .
func start()While 1
[/autoit][autoit][/autoit][autoit]
$msg = GUIGetMsg()
Select
case $msg = $cal
;~ Hier wird das Label zurückgesetzt
GUICtrlCreatePng($filepath_pic&$IniFileLine7,30,80,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,320,80,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,610,80,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,30,200,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,320,200,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,610,200,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,30,320,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,320,320,98)
GUICtrlCreatePng($filepath_pic&$IniFileLine7,610,320,98)
GUICtrlSetData ($Label, "")
GUICtrlSetData ($Label1, "")
GUICtrlSetData ($Label2, "")
GUICtrlSetData ($Label3, "")
GUICtrlSetData ($Label4, "")
GUICtrlSetData ($Label5, "")
GUICtrlSetData ($Label6, "")
GUICtrlSetData ($Label7, "")
GUICtrlSetData ($Label8, "")
GUICtrlSetData ($Label9, "")
connect()
case $msg = $GUI_EVENT_CLOSE
Exit
case $msg = $beenden
Exit
;~ Bilderpfad für vergrößerte Bilder
case $msg = $Pict1
$bigpic_var= $Picture1
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict2
$bigpic_var= $Picture2
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict3
$bigpic_var= $Picture3
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict4
$bigpic_var= $Picture4
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict5
$bigpic_var= $Picture5
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict6
$bigpic_var= $Picture6
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict7
$bigpic_var= $Picture7
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict8
$bigpic_var= $Picture8
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict9
$bigpic_var= $Picture9
GUICtrlCreatePng1($filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $help
$x = $x + 1
Help()
case $msg = $dropdown_name
NameSelect()
case $msg = $mzi
SplashTextOn ("Kontakt", "M" & @LF & "Beter"&@LF& "urg.cat"&@LF&@LF&"Dieses Fenster schließt sich automatisch!", 250,100, @DesktopWidth/2-125, @DesktopHeight/2-100,5, "calibri", 10)
sleep(3000)
SplashOff()
EndSelect
WEnd
EndFunc;~ Bilder (klein) erstellen
[/autoit][autoit][/autoit][autoit]
Func GUICtrlCreatePng($filepath_pic, $iPNG_Left = 0, $iPNG_Top = 0, $factor=0)
_GDIPlus_Startup()Local $hImagePNG = _GDIPlus_ImageLoadFromFile($filepath_pic)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
Global $iPNG_Width = _GDIPlus_ImageGetWidth($hImagePNG)
Global $iPNG_Height = _GDIPlus_ImageGetHeight($hImagePNG)
Local $iPNG_faktor= $iPNG_Width/$factor
Local $hBmp = _GDIPlus_ImageResize($hImagePNG, $iPNG_Width/$iPNG_faktor,$iPNG_Height/$iPNG_faktor) ;GDI+ Bitmap
Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp) ;GDI Bitmap!
Local $iPNG_Height_res= $iPNG_Height/$iPNG_faktor
Local $iPNG_Width_res = $iPNG_Width/$iPNG_faktor
local $test321 = _GDIPlus_GraphicsCreateFromHWND($Form1)
local $test123 = _Gdiplus_GraphicsDrawImage ($test321,$hBmp,$iPNG_Left,$iPNG_Top);~ Local $cPNG_PIC = GUICtrlCreatePic("", $iPNG_Left, $iPNG_Top, $iPNG_Width_res, $iPNG_Height_res)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
;~ GUICtrlSendMsg($cPNG_PIC, 0x0172, 0, $hHBitmap)_WinAPI_DeleteObject($hHBitmap)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_ImageDispose($hImagePNG);~ Return $cPNG_PIC
[/autoit][autoit][/autoit][autoit][/autoit]
EndFunc ;==>GUICtrlCreatePngHoffe das ist einigermaßen Verständlich
Gruß Brick
-
Probiere es mal damit (nicht getestet):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup()
;Das ganze ist ein Geburtstagskalender, der mir an dem heutigen Tag die Info und ein Bild, von
;dem jenigen anzeigt, der Geburtstag hat. Über ein Datumsfeld kann man gezielt zu einem bestimmten
;Datum springen. Hier ein Teil des Codes...
;GUICtrlCreatePng springt in die Funktion GUICtrlCreatePng.. übergibt Filepath und "IniFileLine7", das ist ein Leeres Jpg
;um vorhergehende Bilder zu löschen .
func start()While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Select
case $msg = $cal
;~ Hier wird das Label zurückgesetzt
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,30,80,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,320,80,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,610,80,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,30,200,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,320,200,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,610,200,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,30,320,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,320,320,98)
GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,610,320,98)
GUICtrlSetData ($Label, "")
GUICtrlSetData ($Label1, "")
GUICtrlSetData ($Label2, "")
GUICtrlSetData ($Label3, "")
GUICtrlSetData ($Label4, "")
GUICtrlSetData ($Label5, "")
GUICtrlSetData ($Label6, "")
GUICtrlSetData ($Label7, "")
GUICtrlSetData ($Label8, "")
GUICtrlSetData ($Label9, "")
connect()
case $msg = $GUI_EVENT_CLOSE
Exit
case $msg = $beenden
Exit
;~ Bilderpfad für vergrößerte Bilder
case $msg = $Pict1
$bigpic_var= $Picture1
GUICtrlCreatePng1($Pict1,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict2
$bigpic_var= $Picture2
GUICtrlCreatePng1($Pict2,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict3
$bigpic_var= $Picture3
GUICtrlCreatePng1($Pict3,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict4
$bigpic_var= $Picture4
GUICtrlCreatePng1($Pict4,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict5
$bigpic_var= $Picture5
GUICtrlCreatePng1($Pict5,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict6
$bigpic_var= $Picture6
GUICtrlCreatePng1($Pict6,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict7
$bigpic_var= $Picture7
GUICtrlCreatePng1($Pict7,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict8
$bigpic_var= $Picture8
GUICtrlCreatePng1($Pict8,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $Pict9
$bigpic_var= $Picture9
GUICtrlCreatePng1($Pict9,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
case $msg = $help
$x = $x + 1
Help()
case $msg = $dropdown_name
NameSelect()
case $msg = $mzi
SplashTextOn ("Kontakt", "M" & @LF & "Beter"&@LF& "urg.cat"&@LF&@LF&"Dieses Fenster schließt sich automatisch!", 250,100, @DesktopWidth/2-125, @DesktopHeight/2-100,5, "calibri", 10)
sleep(3000)
SplashOff()
EndSelect
WEnd
EndFunc;~ Bilder (klein) erstellen
[/autoit] [autoit][/autoit] [autoit]
Func GUICtrlCreatePng($iCtrl, $filepath_pic, $iPNG_Left = 0, $iPNG_Top = 0, $factor=0)
Local $hImagePNG = _GDIPlus_ImageLoadFromFile($filepath_pic)
Global $iPNG_Width = _GDIPlus_ImageGetWidth($hImagePNG)
Global $iPNG_Height = _GDIPlus_ImageGetHeight($hImagePNG)
Local $iPNG_faktor= $iPNG_Width/$factor
Local $hBmp = _GDIPlus_ImageResize($hImagePNG, $iPNG_Width/$iPNG_faktor,$iPNG_Height/$iPNG_faktor) ;GDI+ Bitmap
Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp) ;GDI Bitmap!
If $iCtrl Then GUICtrlSendMsg($iCtrl, 0x0172, 0, $hHBitmap)
_WinAPI_DeleteObject($hHBitmap)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_ImageDispose($hImagePNG)EndFunc ;==>GUICtrlCreatePng
[/autoit]Du kannst auch _GDIPlus_ImageScale() zum Skalieren benutzen, wenn du das Bild faktorisiert ändern möchtest.
Gruß,
UEZ -
so werden mir irgendwie gar keine Bilder mehr angezeigt..
ich hab das jetzt so gelöst, das einfach alle Bilder jetzt von EINEM "Leeren Bild" überschrieben werden..
nicht mehr jedes einzeln... somit hab ich nur noch einen kleinen Rahmen um das gesamte Gui, der kaum
auffällt... klar.. nicht die Lösung.. aber ein Workaround mit dem ich leben kann..trotzdem danke für deine Hilfe !!
Gruß Brick