- Сообщения
- 8,673
- Репутация
- 2,487
Пытаюсь реализовать предпросмотр изображений в ListView, интересует в первую очередь отображение миниатюр изображений.
А также нужно их расположить также как это делает проводник Windows.
Вот что получилось:
Но тут проблема, миниатюры получаются обрезанные, а мне нужно полностью отобразить изображение в миниатюре.
P.S
Код под 3.3.14.2.
А также нужно их расположить также как это делает проводник Windows.
Вот что получилось:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>
#include <GUIImageList.au3>
#include <GDIPlus.au3>
#include <File.au3>
Global Const $iGUI_W = 800
Global Const $iGUI_H = 600
Global $sImages_Path = @ScriptDir & '\Images'
Global $hImageList = _GUIImageList_Create(64, 64, 5)
_GDIPlus_Startup()
$hGUI = GUICreate('Image Browser', $iGUI_W, $iGUI_H)
$iLV = GUICtrlCreateListView('Name|Creation date|Modified date|Picture taken date|Geolocation', 20, 50, $iGUI_W - 40, $iGUI_H - 70, BitOR($GUI_SS_DEFAULT_LISTVIEW, $LVS_NOCOLUMNHEADER))
_GUICtrlListView_SetView($iLV, 3)
_GUICtrlListView_SetImageList($iLV, $hImageList, 1)
_Load_Images()
GUISetState(@SW_SHOW, $hGUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _Load_Images()
Local $aImages = _FileListToArrayRec($sImages_Path, '*.jpg', 1, 1, 0, 2)
Local $sFName, $hImage, $hThumb, $hBitmap, $iImage
For $i = 1 To UBound($aImages) - 1
$sFName = StringRegExpReplace($aImages[$i], '^.*\\', '')
$hImage = _GDIPlus_ImageLoadFromFile($aImages[$i])
$hThumb = _GDIPlus_ImageGetThumbnail($hImage)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hThumb)
$iImage = _GUIImageList_Add($hImageList, $hBitmap)
_GUICtrlListView_AddItem($iLV, $sFName, $iImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ImageDispose($hThumb)
_WinAPI_DeleteObject($hBitmap)
Next
EndFunc
Но тут проблема, миниатюры получаются обрезанные, а мне нужно полностью отобразить изображение в миниатюре.
P.S
Код под 3.3.14.2.