PDA

Показать полную графическую версию : [решено] Увеличение изображении при нажатии на него


Centrinar
16-02-2011, 23:20
Что-то похожее на галерею, есть картинки GUICtrlCreatePic... размером 50х50, возможно ли реализовать увеличении ее в отдельно окошке при нажатии на нее.

Yashied
17-02-2011, 02:34
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>

Global $Zoom = 0

GUICreate('MyGUI', 400, 400)
$Pic = GUICtrlCreatePic('Test.jpg', 168, 168, 64, 64)
GUISetState()

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Pic
If $Zoom Then
For $i = 244 To 64 Step -20
GUICtrlSetPos($Pic, (400 - $i) / 2,(400 - $i) / 2, $i, $i)
GUICtrlSetImage($Pic, 'Test.jpg')
Next
Else
For $i = 76 To 256 Step 20
GUICtrlSetPos($Pic, (400 - $i) / 2,(400 - $i) / 2, $i, $i)
GUICtrlSetImage($Pic, 'Test.jpg')
Next
EndIf
$Zoom = Not $Zoom
EndSwitch
WEnd

madmasles
17-02-2011, 03:33
Centrinar,
Или так.
Icons.au3 (http://autoit-script.ru/index.php?topic=49.0)
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Icons.au3>

Dim $aPic[10][2] = [[9],[@ScriptDir & '\1.png'],[@ScriptDir & '\2.png'],[@ScriptDir & '\3.png'], _
[@ScriptDir & '\4.png'],[@ScriptDir & '\5.png'],[@ScriptDir & '\6.png'], _
[@ScriptDir & '\7.png'],[@ScriptDir & '\8.png'],[@ScriptDir & '\9.png']]

$iW = 128
$iH = 128
$iInterval = 10
$ijW = 0
$ijH = 0
$hGui = GUICreate('Test', $iW * 3 + ($aPic[0][0] / 3 + 1) * $iInterval, $iH * 3 + ($aPic[0][0] / 3 + 1) * $iInterval)
GUISetBkColor(0xFFDAB9)
For $i = 1 To $aPic[0][0]
$aPic[$i][1] = GUICtrlCreatePic('', $iInterval * 2 + $iW * $ijW, $iInterval * 2 + $iH * $ijH, $iW, $iH)
_SetImage($aPic[$i][1], $aPic[$i][0])
$ijW += 1
If Not Mod($i, 3) Then
$ijW = 0
$ijH += 1
EndIf
Next
$nPic = GUICtrlCreatePic('', 0, 0, $iW * 3 + ($aPic[0][0] / 3 + 1) * $iInterval, $iH * 3 + ($aPic[0][0] / 3 + 1) * $iInterval)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState()

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nPic
For $j = 1 To $aPic[0][0]
GUICtrlSetState($aPic[$j][1], $GUI_SHOW)
Next
_SetImage($nPic, '')
GUICtrlSetState($nPic, $GUI_HIDE)
Case Else
For $i = 1 To $aPic[0][0]
If $nMsg = $aPic[$i][1] Then
For $j = 1 To $aPic[0][0]
GUICtrlSetState($aPic[$j][1], $GUI_HIDE)
Next
GUICtrlSetState($nPic, $GUI_SHOW)
_SetImage($nPic, $aPic[$i][0])
EndIf
Next
EndSwitch
WEnd

madmasles
17-02-2011, 04:21
Yashied,
У Вас симпатичнее. :)
К своему приспособил:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Icons.au3>

Dim $aPic[10][2] = [[9],[@ScriptDir & '\1.png'],[@ScriptDir & '\2.png'],[@ScriptDir & '\3.png'], _
[@ScriptDir & '\4.png'],[@ScriptDir & '\5.png'],[@ScriptDir & '\6.png'], _
[@ScriptDir & '\7.png'],[@ScriptDir & '\8.png'],[@ScriptDir & '\9.png']]
$nLastPic = ''
$iW = 128
$iH = 128
$iInterval = 10
$ijW = 0
$ijH = 0

$iW_Gui = $iW * 3 + ($aPic[0][0] / 3 + 1) * $iInterval
$iH_Gui = $iH * 3 + ($aPic[0][0] / 3 + 1) * $iInterval

$hGui = GUICreate('Test', $iW_Gui, $iH_Gui, -1, -1, -1, $WS_EX_COMPOSITED)
GUISetBkColor(0xFFDAB9)
For $i = 1 To $aPic[0][0]
$aPic[$i][1] = GUICtrlCreatePic('', $iInterval * 2 + $iW * $ijW, $iInterval * 2 + $iH * $ijH, $iW, $iH)
_SetImage($aPic[$i][1], $aPic[$i][0])
$ijW += 1
If Not Mod($i, 3) Then
$ijW = 0
$ijH += 1
EndIf
Next
$nPic = GUICtrlCreatePic('', ($iW_Gui - $iW) / 2, ($iH_Gui - $iH) / 2, $iW, $iH)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState()

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $nPic
For $ii = $iW_Gui To $iW Step -10
GUICtrlSetPos($nPic, ($iW_Gui - $ii) / 2, _
($iH_Gui - $ii) / 2, $ii, $ii)
_SetImage($nPic, $nLastPic)
Next
$nLastPic = ''
_SetImage($nPic, $nLastPic)
GUICtrlSetState($nPic, $GUI_HIDE)
For $j = 1 To $aPic[0][0]
GUICtrlSetState($aPic[$j][1], $GUI_SHOW)
Next
Case Else
For $i = 1 To $aPic[0][0]
If $nMsg = $aPic[$i][1] Then
For $j = 1 To $aPic[0][0]
GUICtrlSetState($aPic[$j][1], $GUI_HIDE)
Next
GUICtrlSetState($nPic, $GUI_SHOW)
$nLastPic = $aPic[$i][0]
For $ii = $iW To $iW_Gui Step 10
GUICtrlSetPos($nPic, ($iW_Gui - $ii) / 2, _
($iH_Gui - $ii) / 2, $ii, $ii)
_SetImage($nPic, $nLastPic)
Next
GUICtrlSetPos($nPic, 0, 0, $iW_Gui, $iH_Gui)
_SetImage($nPic, $nLastPic)
EndIf
Next
EndSwitch
WEnd




© OSzone.net 2001-2012