hey
ich brauche dringend eure hilfe, ich möchte mir ein png in der gui anzeigen lassen, allerdings unterstützt GUICtrlCreatePic nur jpg/bmp/gif
hat jemand nen tipp wie ich dieses problem so einfach wie möglich lösen kann?
hey
ich brauche dringend eure hilfe, ich möchte mir ein png in der gui anzeigen lassen, allerdings unterstützt GUICtrlCreatePic nur jpg/bmp/gif
hat jemand nen tipp wie ich dieses problem so einfach wie möglich lösen kann?
#lemon: Soweit ich weiß, geht das nur mit GDI+.
So kann das unteranderem funktionieren:
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
_Example()
[/autoit][autoit][/autoit][autoit]Func _Example()
Local $sFile = FileOpenDialog("Select an image", "", "Images (*.bmp;*.png;*.jpg;*.gif;*.tif)")
If @error Or Not FileExists($sFile) Then Return
If Not _GDIPlus_Startup() Then
MsgBox($MB_SYSTEMMODAL, "ERROR", "GDIPlus.dll v1.1 not available")
Return
EndIf
Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
Local $iWidth = 600
Local $iHeight = _GDIPlus_ImageGetHeight($hImage) * 600 / _GDIPlus_ImageGetWidth($hImage)
Local $hGui = GUICreate("GDI+ v1.1", $iWidth, $iHeight)
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
GUISetState(@SW_SHOW)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iWidth, $iHeight)
[/autoit][autoit][/autoit][autoit]Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
_GDIPlus_ImageDispose($hImage)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
EndFunc ;==>_Example
Die Variante von KloMeister ist an dieser Stelle eindeutig nicht zu empfehlen. Dieser Algorithmus zeichnet das Bild einmalig und verfällt dann in die normale Message-Schleife. Sobald du die GUI aus dem Bild schiebst, wird mindestens ein Teil der Zeichnung fehlen.
Eine gute Möglichkeit wäre z.B., das Bild in der Message-Schleife dauerhaft neu zu zeichnen. Die eindeutig besser respektive optimale Variante wäre, die WM_PAINT-Nachricht an dein Fenster abzufangen und dementsprechend zu reagieren, indem der Zeichenvorgang wiederholt wird. So ist es auch von Microsoft gedacht.
Die eindeutig besser respektive optimale Variante wäre, die WM_PAINT-Nachricht an dein Fenster abzufangen und dementsprechend zu reagieren, indem der Zeichenvorgang wiederholt wird.
Kann ich nur voll unterschreiben, möchte aber das _GuiCtrlSetImageEx empfehlen.
Wenn es dir #lemon nur um die schnelle Umsetzung für deine GUI geht und nicht um das (natürlich dauerhaft sinnvollere) Lernen, dann nimm _GuiCtrlSetImageEx. Das funktioniert wirklich klasse. Danke an dieser Stelle an Oskar
Schau dir einfach das dritte Beispiel zu GUICtrlCreatePic in der Hilfe an.
hey
ich brauche dringend eure hilfe, ich möchte mir ein png in der gui anzeigen lassen, allerdings unterstützt GUICtrlCreatePic nur jpg/bmp/gifhat jemand nen tipp wie ich dieses problem so einfach wie möglich lösen kann?
Wenn du nur transparente Bilder haben willst, dann musst du deine PNG nur in 32bpp BMP konvertieren, die kannst du dann mit GuiCtrlCreatePic verwenden. Hier ist ein kostenloses Tool dafür. Andernfalls muss es GDI+ sein