Danke,
das war ja einfach und wie kann ich von den bilder dynamisch die grösse ändern also per Mausklick?
If.....
-
- [ offen ]
-
subzero007 -
27. Mai 2009 um 15:37 -
Geschlossen -
Erledigt
-
-
Hmm $WS_SIZEBOX geht nich wirklich mit Bildern.. aber du könntest rein theorethisch einen Doppelklick abfangen, daraufhin das ausgewähle Bild löschen und nochmal neu erstellen nur ebn größer! Oder mit nem Button
-
Hmmm,
ja aber dann könnte man ja die grösse ja nicht bestimmen,es geht ja darum:
Bild Positionieren das geht ja, wie kann man die bildgrösse verändern also mit der maus die Grösse bestimmen,
also so in etwa wie bei Paint, an den ecken Klicken ziehen bis die bildgrösse da ist die man will.
Oder ist das mit Autoit nicht möglich? -
Du kannst mit AutoIT sogut wie Alles machen, am Ende ist ehh alles Assembler.
Nur ist die Frage dann halt nur.. "Wie?"
Du könntest Transparenter Buttons an den Rändern erstellen die sich relativ zum Pic verhalten.
Dann halt diesen "Pfeilcursor" auswählen für die Buttons damit man weiß das da was is
Und die Buttons dann mit der Funktion belegen, die größe des Pics relativ zur Maus zu ändern. -
Tolle idee ?
hast ein tippe wie ich dass umsetze mein aktueller code ist in beitrag 21 ? -
geht auch anders... ich bau dir die dragme funktion mal um ... mom
-
will dir nicht alles machen, aber hab dir mal n denkanstoß gebastelt... stichwort: größenänderung beim klicken auf das bild mit gleichzeitig gedrückter strg taste ( na machts klick? )
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Array.au3>
#Include <Misc.au3>
#include <SliderConstants.au3>
#include <ListviewConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>
#Include <GuiListView.au3>
#Include <Array.au3>
#Include <File.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Global $Pos_M2 = MouseGetPos(), $pic
Dim $sPic[1]$hGUI = GUICreate("Transparent", 575, 510, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_ACCEPTFILES)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
$insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_insert")
$delete = GuiCtrlCreateButton("Delete Pic" ,70,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_Delete")
$label = GUICtrlCreateLabel("Transparence = 0%", 30, 437, -1, 14)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
$slider = GUICtrlCreateSlider(10, 457, 144, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
Dim $Acc[2][2] = [["^i", $insert], ["^d", $delete]]
GUISetAccelerators($Acc)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndFunc _insert()
[/autoit] [autoit][/autoit] [autoit]
$bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
If $bild = "" Or @error Then return
GUICtrlCreatePic($bild, 150, 150)
GuiCtrlSetOnEvent(-1, "_DragMe")
GUICtrlCreateMenu("")
EndFuncFunc _delete()
[/autoit] [autoit][/autoit] [autoit]
GuiCtrlDelete($pic)
EndFuncFunc _DragMe()
[/autoit] [autoit][/autoit] [autoit]
Global $hGui = @GUI_WINHANDLE
$pic = @GUI_CTRLID
Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
Local $dll = DllOpen("user32.dll")
$Opt_old = Opt('MouseCoordMode', 0)
$Pos_C = ControlGetPos($hGui, "", $pic)
$Pos_M = MouseGetPos()
$Pos_W = WinGetPos($hGui)
$x_Offset = $Pos_M[0] - $Pos_C[0]
$y_Offset = $Pos_M[1] - $Pos_C[1]
_MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
If _IsPressed('11', $dll) Then
While _IsPressed('11', $dll) And _IsPressed('11', $dll)
TrayTip("Info", "Mit STRG + linke Maustaste auf ein Bild geklickt", 10, 1)
WEnd
TrayTip("Info", "Eine der Beiden Tasten losgelassen", 10, 1)
Else
While _IsPressed('01', $dll)
$Pos_M = MouseGetPos()
If $Pos_M <> $Pos_M2 Then
GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
sleep(10)
EndIf
$Pos_M = $Pos_M2
sleep(50)
WEnd
EndIf
DllClose($dll)
Opt('MouseCoordMode', $Opt_old)
_MouseTrap()
EndFuncFunc WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam)
[/autoit]
Local $hWndFrom, $iCode
If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
$hWndFrom = $lParam
$iCode = _WinAPI_HiWord($wParam)
Switch $hWndFrom
Case $slider, $hWndCombo1
GUICtrlSetData($label, "Transparence = " & GUICtrlRead($slider) & "%")
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
EndSwitch
EndFunc
Func _Ex()
Exit
EndFUncdu musst nur noch das resizing mit
[autoit]GUICtrlSetPos
[/autoit]einbauen
-
Hab ein bisschen mitleid mit einem anfänger noch ein tipp anwelcher stelle muss ich das machen ?
-
hab dir doch tooltips eingefügt
kannst du denn überhaupt deinen bisherigen quelltext nachvollziehen?
-
Wenn ich ehrlich bin verstehe ich 80 % da ich vieles mit ChaosKeks zusammen gemacht habe,
ich gebe ja mir mühe aber wenn man im Dunkel ist eine taschenlame bei hat aber keine batterien hat hilft das nicht weiter besonders wenn man auch kein feuerzeug hat.Willst du mir helfen?
Edit:
Also bin jetzt weiter wenn ich linke maustaste und strg drücke wandert mein Bild weg,
aber ich kann nicht varieren habe auch keine hilfe gefunden,
Würde mich über jede hilfe freuen
Ich vermutte der fehler liegt in zeile 66 ich muss vermutlich anstatt
GUICtrlSetPos($pic,"",$Pos_C,$Pos_M) die bildgrösse bestimmen kriege es aber irgendwie nicht hin es ändert nur die position vom bildSpoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#Include <Array.au3>
#Include <Misc.au3>
#include <SliderConstants.au3>
#include <ListviewConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>
#Include <GuiListView.au3>
#Include <Array.au3>
#Include <File.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Global $Pos_M2 = MouseGetPos(), $pic
Dim $sPic[1]$hGUI = GUICreate("Transparent", 575, 510, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_ACCEPTFILES)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
$insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_insert")
$delete = GuiCtrlCreateButton("Delete Pic" ,70,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_Delete")
$label = GUICtrlCreateLabel("Transparence = 0%", 30, 437, -1, 14)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
$slider = GUICtrlCreateSlider(10, 457, 144, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
Dim $Acc[2][2] = [["^i", $insert], ["^d", $delete]]
GUISetAccelerators($Acc)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndFunc _insert()
[/autoit] [autoit][/autoit] [autoit]
$bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
If $bild = "" Or @error Then return
GUICtrlCreatePic($bild, 150, 150)
GuiCtrlSetOnEvent(-1, "_DragMe")
GUICtrlCreateMenu("")
EndFuncFunc _delete()
[/autoit] [autoit][/autoit] [autoit]
GuiCtrlDelete($pic)
EndFuncFunc _DragMe()
[/autoit] [autoit][/autoit] [autoit]
Global $hGui = @GUI_WINHANDLE
$pic = @GUI_CTRLID
Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
Local $dll = DllOpen("user32.dll")
$Opt_old = Opt('MouseCoordMode', 0)
$Pos_C = ControlGetPos($hGui, "", $pic)
$Pos_M = MouseGetPos()
$Pos_W = WinGetPos($hGui)
$x_Offset = $Pos_M[0] - $Pos_C[0]
$y_Offset = $Pos_M[1] - $Pos_C[1]
_MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
If _IsPressed('11', $dll) Then
While _IsPressed('11', $dll) And _IsPressed('11', $dll)
TrayTip("Info", "Mit STRG + linke Maustaste auf ein Bild geklickt", 10, 1)
GUICtrlSetPos($pic,"",$Pos_C,$Pos_M)
WEnd
TrayTip("Info", "Eine der Beiden Tasten losgelassen", 10, 1)
Else
While _IsPressed('01', $dll)
$Pos_M = MouseGetPos()
If $Pos_M <> $Pos_M2 Then
GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
sleep(10)
EndIf
$Pos_M = $Pos_M2
sleep(50)
WEnd
EndIf
DllClose($dll)
Opt('MouseCoordMode', $Opt_old)
_MouseTrap()
EndFuncFunc WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam)
[/autoit]
Local $hWndFrom, $iCode
If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
$hWndFrom = $lParam
$iCode = _WinAPI_HiWord($wParam)
Switch $hWndFrom
Case $slider, $hWndCombo1
GUICtrlSetData($label, "Transparence = " & GUICtrlRead($slider) & "%")
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
EndSwitch
EndFunc
Func _Ex()
Exit
EndFUncbernd670: Beiträge zusammengefasst!
-
du hast leider nicht verstanden was ich von dir wollte...
hier der code
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Array.au3>
#Include <Misc.au3>
#include <SliderConstants.au3>
#include <ListviewConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>
#Include <GuiListView.au3>
#Include <Array.au3>
#Include <File.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Global $Pos_M2 = MouseGetPos(), $pic
Dim $sPic[1]$hGUI = GUICreate("Transparent", 575, 510, Default, Default, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_ACCEPTFILES)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Ex")
$insert = GuiCtrlCreateButton("Insert Pic" ,10,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_insert")
$delete = GuiCtrlCreateButton("Delete Pic" ,70,10)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
GuiCtrlSetOnEvent(-1, "_Delete")
$label = GUICtrlCreateLabel("Transparence = 0%", 30, 437, -1, 14)
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
$slider = GUICtrlCreateSlider(10, 457, 144, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
Dim $Acc[2][2] = [["^i", $insert], ["^d", $delete]]
GUISetAccelerators($Acc)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
sleep(100)
WEndFunc _insert()
[/autoit] [autoit][/autoit] [autoit]
$bild = FileOpenDialog("Wählen Sie eine Datei aus!", @DesktopDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
If $bild = "" Or @error Then return
GUICtrlCreatePic($bild, 150, 150)
GuiCtrlSetOnEvent(-1, "_DragMe")
GUICtrlCreateMenu("")
EndFuncFunc _delete()
[/autoit] [autoit][/autoit] [autoit]
GuiCtrlDelete($pic)
EndFuncFunc _DragMe()
[/autoit] [autoit][/autoit] [autoit]
Global $hGui = @GUI_WINHANDLE
$pic = @GUI_CTRLID
Local $Pos_C, $Pos_M, $Pos_M2, $Opt_old
Local $dll = DllOpen("user32.dll")
$Opt_old = Opt('MouseCoordMode', 0)
$Pos_C = ControlGetPos($hGui, "", $pic)
$Pos_M = MouseGetPos()
$Pos_W = WinGetPos($hGui)
$x_Offset = $Pos_M[0] - $Pos_C[0]
$y_Offset = $Pos_M[1] - $Pos_C[1]
;_MouseTrap($Pos_W[0]+$x_Offset,$Pos_W[1]+$y_Offset,$Pos_W[0]+$Pos_W[2],$Pos_W[1]+$Pos_W[3])
If _IsPressed('11', $dll) Then
While _IsPressed('01', $dll)
$Pos_M = MouseGetPos()
$x_Offset = $Pos_M[0] - $Pos_C[0]
$y_Offset = $Pos_M[1] - $Pos_C[1]
GUICtrlSetPos($pic, $Pos_C[0], $Pos_C[1], $Pos_C[2] + $x_Offset, $Pos_C[3] + $y_Offset)
sleep(10)
WEnd
Else
While _IsPressed('01', $dll)
$Pos_M = MouseGetPos()
If $Pos_M <> $Pos_M2 Then
GUICtrlSetPos($pic,$Pos_M[0] - $x_Offset, $Pos_M[1] - $y_Offset)
sleep(10)
EndIf
$Pos_M = $Pos_M2
sleep(50)
WEnd
EndIf
DllClose($dll)
Opt('MouseCoordMode', $Opt_old)
_MouseTrap()
EndFuncFunc WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam)
[/autoit]
Local $hWndFrom, $iCode
If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
$hWndFrom = $lParam
$iCode = _WinAPI_HiWord($wParam)
Switch $hWndFrom
Case $slider, $hWndCombo1
GUICtrlSetData($label, "Transparence = " & GUICtrlRead($slider) & "%")
WinSetTrans("Transparent", "", 255 - GUICtrlRead($slider) * 2.55)
EndSwitch
EndFunc
Func _Ex()
Exit
EndFUnc- mit linker maustaste verschieben
- mit linker maustaste und strg taste gleichzeitig größe ändern -
Das tut mir leid, ist es nicht möglich per maus die grösse zu bestimmen,
so wird er ja grösser ohne das man bestimmen welche genaue grösse?
Ist die variante nicht möglich also mit maus verschieben drehen grössen ändern meinetwegen auch mit strg? -
du kannst mit meiner variante die größe frei bestimmen!!
halten die strg taste gedrückt -> dann klicke auf das entsprechende bild und bewege deine maus -> hat das bild die gewünschte größe, lass die linke maustaste los (oder auch die strg taste)
das funktioniert bei mir hier zu 100 %
-
Hast ja recht funktioniert ja auch
aber ich muss es genauer einstellen können und eventuell drehen können was meinst du ist das zuviel verlangt von autoit?
-
wie willst du das einstellen können? per inputbox-abfrage oder wie? genauere angaben bitte...
bild drehen wird schwierig werden... da wirst du um gdi+ nicht herumkommen und das ist für einen anfänger too much...
-
Hast ja recht funktioniert ja auch
aber ich muss es genauer einstellen können und eventuell drehen können was meinst du ist das zuviel verlangt von autoit?
Nochmal: Am Ende ist ehh alles ASM ! Hängt dann nur von der Geschwindigkeit ab!
-
Wenn ich ,
strg linke maustaste macht es zu grosse Schritte sollte kleinere schritte und breite und höhe würde ich gerne auch bestimmen,
also ob das bild breiter oder höher werden soll?"zur zeit wird es ja gleichmässig gross"
ok dann verzichte ich aufs drehen das mache ich wenn ich gross binwie geht das freue mich schon für jeden vorschlag
-
halte mal deine´linke maustaste gedrückt und klicke nicht nur einmal drauf, so wie ich es dir jetzt schon 1000000 mal erklärt habe... dann kannst du es groß und klein zeiehen wie du willst...
??!!
-
ok ich versuche dir mein problem zu erklären
wenn ich das bild einfüge ist es so gross=autoit.de/wcf/attachment/4962/
wenn ich einmal klicke so gross=autoit.de/wcf/attachment/4963/
wenn ich noch einmall klicke so=autoit.de/wcf/attachment/4964/
ich will das er in kleineren abständen grösser wird, zb in mm"milimeter" er wird zur zeit in dm"dezimeter"
und das ich sagen kann werde grösser also nur y achse oder x achse
also gehe nur in die breite oder nur in die höhe ich hoffe ich konnte dir mein problem erklären,
ich habe schon verstanden was du meinst aber will und brauche es kleinerDanke nochmal an euch alle ohne euch wäre ich aufgeschmissen
-
OMG Stell dich dochmal nicht so blöd an !
MAUS GEDRÜCKT HALTEN UND DANN BEWEGEN ! -