Hallo Leute,
kann ich einem GDI+ Bild $GUI_WS_EX_PARENTDRAG zuweisen?
Also dass ich mit dem meine Gui bewegen kann?
MfG
qixx
Hallo Leute,
kann ich einem GDI+ Bild $GUI_WS_EX_PARENTDRAG zuweisen?
Also dass ich mit dem meine Gui bewegen kann?
MfG
qixx
Nein. Ein GDI+ Bild ist kein Control, dem du Styles zuweisen kannst; du kannst es genauso wenig löschen oder auslesen.
Du könntest es höchstens mit GuiCtrlCreatePic erstellen, dann kannst du ihm Styles zuweisen, aber das ist weit von GDI+ entfernt, oder du benutzt die unter mir genannte "raupische Methode"
Einfach ein Label über dem Bild erstellen, dann klappt es auch.
Schade.
Wollte nämlich eine transparente GUI erzeugen und dann ein GDI+ Bild als Hintergrund nehmen.
Nagut, muss ich das wohl anders regeln.
Danke!
MfG
qixx
Und was hällt dich davon ab ein Label über dein Bild zu legen mit transparenten Hintergrund und ohne Text?
Dann kann man auch den Transparenten Bereich anklicken und ziehen.
Also den um das Bild herum.
Kommt bisschen doof bei einem Kreis.
MfG
qixx
Dann musst du mit den Mauskoordinaten und WinMove arbeiten ;). Im Forum sind auch ein paar Funktionen von mir mit denen du feststellen kannst, ob ein Punkt innerhalb eines Kreises liegt.
Hallo qixx,
teste dieses Skript sollte dass sen was du suchst obwohl der Stil $WS_EX_ParentDrag nicht verwendet wird:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
Global $hGUI, $hImage, $hGraphic, $hImage
Global Const $SC_DRAGMOVE = 0xF012
If Not FileExists(@ScriptDir & "\beetle3.png") Then InetGet("http://www.autoit.de/index.php?page=Attachment&attachmentID=11994&h=0f539727a8792db143f431db6e1d5b5f4b1ab20a", @ScriptDir & "\beetle3.png", 1, 0)
_GDIPlus_Startup()
; Load PNG image
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\beetle3.png")
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
ConsoleWrite($iWidth & " / " & $iHeight)
; Create GUI
$hGUI = GUICreate("Show PNG", $iWidth, $iHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0x01, $hGUI)
GUISetState()
_WinAPI_SetLayeredWindowAttributes($hGUI, 0x01, 0xFF, 3)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $GUI_EVENT_PRIMARYDOWN
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndSwitch
WEnd
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Exit
; Draw PNG image
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, 1)
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_PAINT
das Beispiel habe ich in meinem Archiv Author UEZ, ich weiss aber den Thread nicht mehr wo er es vorgestellt hat,
mfg AutoBert
Der Kreis war eher ein Beispiel.
Das was ich habe ist mehr ein Oval.Werde mal schauen, wie ich das mache.
Denke mal, dass ich das trotzdem mit dem Label mache.
Timing von AutoBert und mir.
Das schaut gut aus, was genau ist da denn jetzt der Trick?
MfG
qixx
Nein, aber achte auf die Zeit, wann unsere Beiträge gepostet wurden!
Timing!
MfG
qixx
autoBert, das ist genau das selbe, als wenn man ein Label über das Bild legt.
Nicht nur im Berich der Grafik kann man die GUI verschieben, sondern im kompletten Rechteck auf der sich die Grafik befindet
Genau. Da ist das mit dem Label einfacher umzusetzen.
MfG
qixx
das ist genau das selbe, als wenn man ein Label über das Bild legt.
Nicht nur im Berich der Grafik kann man die GUI verschieben, sondern im kompletten Rechteck auf der sich die Grafik befindet
also unter XP Prof. SP3 kann ich nur auf der Grafik verschieben, daneben wird der Hintergrund (z.B.Scite) angeklickt,
mfg autoBert
Bein Windows 7 nicht. Also mal wieder verschlechtbessert.
Edit: Hab es eben auf WInXP SP3 getestet, da geht es so wie Autobert sagt.
Bei Win 7 Prof x64 gehts nicht.
MfG
qixx
Um festzustellen ob ein Punkt innerhalb eines Ovals liegt habe ich auch eine Funktion geschrieben :P. Und falls du jetzt auch noch irreguläre Formen benutzen willst gibt es auch die Region Funktionen in der GDIP.au3 ;).
Jetzt must du dich nur noch für einen Lösungsweg entscheiden.
Schaue mal hier: [ offen ] bunter Ladebalken auf einer Form mit GDI+
Vielleicht suchst du ja so was ähnliches!
Gruß,
UEZ