CHEARV 发表于 2010-9-28 23:08:20

请教,有支持TIFF格式的GUICtrlCreatePic函数吗?[已解决]

本帖最后由 CHEARV 于 2010-10-2 19:55 编辑

大家好,我想写一个显示图片的程序,我的图片全部是TIFF格式的,GUICtrlCreatePic不支持。请问,有其他好的办法显示TIFF格式的图片吗?

破帽遮颜 发表于 2010-9-29 00:10:58

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <GDIPlus.au3>

GUICreate("", 377, 257, 192, 124)
_GUICtrlCreatePNG(GUICtrlCreatePic("", 5, 10, 363, 240), @ScriptDir & '\1.TIFF')
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd

Func _GUICtrlCreatePNG($Handle, $sImage)
        If Not IsHWnd($Handle) Then $Handle = GUICtrlGetHandle($Handle)
        _GDIPlus_Startup()
        Local $hImages = _GDIPlus_BitmapCreateFromFile($sImage)
        _WinAPI_SetWindowLong($Handle, -16, BitOR(_WinAPI_GetWindowLong($Handle, -16), Hex($SS_BITMAP)))
        _WinAPI_DeleteObject(_SendMessage($Handle, 0x0172, 0, 0))
        _SendMessage($Handle, 0x0172, 0, _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImages))
        _GDIPlus_BitmapDispose($hImages)
        _GDIPlus_Shutdown()
EndFunc

CHEARV 发表于 2010-9-29 20:40:31

本帖最后由 CHEARV 于 2010-9-29 23:29 编辑

谢谢破帽遮颜 ,成功了。不过,我还是看不懂代码。 大概意思是通过子函数在内存当中转换成BMP格式再用来显示是吧。

    再想请教一下,是不是可以这样理解。_GUICtrlCreatePNG ( 控件ID, 文件名 )的功能就相当于支持TIFF格式的 GUICtrlSetImage ( 控件ID, 文件名 )?
    另外,我感觉他显示图片没有ACDSEE快, ACDSEE显示图片是一点就出来。而这里能感觉到闪烁一下,感觉就像一幅卷好的画瞬间从屏幕最上方放下来一样。这个速度能不能改进一下?

C.L 发表于 2010-9-29 21:26:33

回复 2# 破帽遮颜

这种转换方法我还是第一次见,学习了

republican 发表于 2010-9-30 07:38:12

回复 2# 破帽遮颜

学习了~·
还是第一次见这样子整合的。

menfan1 发表于 2010-9-30 08:47:11

呵呵好东西啊正需要。。

lin0308 发表于 2010-10-4 15:20:15

加载PNg也能用在TITF,见识了

zery 发表于 2011-4-7 23:04:34

有创意,但如果图片很大,那不是效率很低啊
页: [1]
查看完整版本: 请教,有支持TIFF格式的GUICtrlCreatePic函数吗?[已解决]