sunyu4506 发表于 2016-5-9 17:11:04

【已解决】怎么让GUICtrlCreatePic显示PNG图片??

本帖最后由 sunyu4506 于 2016-5-10 09:46 编辑

怎么让GUICtrlCreatePic显示PNG图片??

nmgwddj 发表于 2016-5-9 17:46:57

GUICtrlCreatePic 貌似做不到。

仔细看帮助文档,这例子除图片路径外,其他原封不动从帮助文档复制过来的。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>

Global $hGUI, $hImage, $hGraphic, $hImage1

; Create GUI
$hGUI = GUICreate("Show PNG", 250, 250)

; Load PNG image
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile("E:\Pictures\2016-04-29_172117.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
GUISetState()

; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

; Draw PNG image
Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam)
        #forceref $hWnd, $Msg, $wParam, $lParam
        _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
        _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
        _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
        Return $GUI_RUNDEFMSG
EndFunc   ;==>MY_WM_PAINT

sunyu4506 发表于 2016-5-10 09:45:38

好像没什么直接解决的办法,找了个别的办法先把图片转换为BMP再加载。

nmgwddj 发表于 2016-5-10 09:51:33

回复 3# sunyu4506


    这样的话大图片效率不是很好。

skyfree 发表于 2016-5-10 10:06:09

https://www.autoitscript.com/forum/topic/92675-icons-udf/
1、下载这个UDF,#include到你的代码;
2、使用其中_SetImage函数设置png图片,形如_SetImage($Pic1, $sPng)。
页: [1]
查看完整版本: 【已解决】怎么让GUICtrlCreatePic显示PNG图片??