找回密码
 加入
搜索
查看: 2242|回复: 4

[图形处理] 【已解决】怎么让GUICtrlCreatePic显示PNG图片??

[复制链接]
发表于 2016-5-9 17:11:04 | 显示全部楼层 |阅读模式
本帖最后由 sunyu4506 于 2016-5-10 09:46 编辑

怎么让GUICtrlCreatePic显示PNG图片??
发表于 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
 楼主| 发表于 2016-5-10 09:45:38 | 显示全部楼层
好像没什么直接解决的办法,找了个别的办法先把图片转换为BMP再加载。
发表于 2016-5-10 09:51:33 | 显示全部楼层
回复 3# sunyu4506


    这样的话大图片效率不是很好。
发表于 2016-5-10 10:06:09 | 显示全部楼层
https://www.autoitscript.com/forum/topic/92675-icons-udf/
1、下载这个UDF,#include到你的代码;
2、使用其中_SetImage函数设置png图片,形如  _SetImage($Pic1, $sPng)。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 13:48 , Processed in 0.082059 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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