Bild jeder Pixel des Bildes ein anderer Wert

07/07/2009 15:42 Shadow992#1
Also sagen wir ich habe eine Karte von Deutschland , und wenn ich jetzt auf z.b. die Mitte vond Deutschland klicke , kommt eine msgbox . Und wenn ich oben auf Deutschland drücke , kommt eine Inputbox .

Ich habe versucht das ganze mit unsichtbaren Buttons zu machen , aber sie sind nicht anklickbar , während sie im bild sind , hat jemand eine Idee wie ich das amchen könnte .

Ich möchte sozusagen 3-5 anklickbare Orte in einem bild haben , die wenn drauf gedrückt wird , irgendeinen Befehl ausführen sollen .
07/07/2009 16:16 flothekilla94#2
würd mich auch mal interessieren
07/07/2009 18:51 Mankana#3
Das geht ganz einfach wenn du die _IsPressed() und MouseGetPos() Funktion benutzt.
Du prüfst halt ob die linke Maustaste gedrückt wurde, bestenfalls überprüfst du noch mit
WinGetState() ob dein Fenster aktiv ist. Danach fragst du ab ob sich der Cursor innerhalb eines Vierecks (Ersatz für den Button) befindet. Anschließend kannst du dann das jeweilige
Ereignis aufrufen.

Hier ist ein kleines Beispiel um zu zeigen wie ich das meine:

Code:
#Include <Misc.au3>

If _IsPressed(01) And WinGetState("Weltkarte") = 15 Then
       $coord = MouseGetPos()
       If $coord[0] >= 50 And $coord[0] <= 80 And $coord[1] >= 50 And $coord[1] <= 70 Then
                ....
                ....
       Else If $coord[0] >= 230 And $coord[0] <= 280 ....
                ....
       EndIf
EndIf
Ich hoffe mal das haut so ungefähr hin

Variante 2 ist einfacher:

Du erstellst eine leere Picture Box z.B. GuiCtrlCreatePic("",50,50,30,20),
versiehst diese mit einer Funktion und den OnTop Attribut GuiCtrlSetState($pic,$GUI_ONTOP)

MfG Mankana
07/08/2009 17:52 Shadow992#4
Quote:
Originally Posted by Mankana View Post
Das geht ganz einfach wenn du die _IsPressed() und MouseGetPos() Funktion benutzt.
Du prüfst halt ob die linke Maustaste gedrückt wurde, bestenfalls überprüfst du noch mit
WinGetState() ob dein Fenster aktiv ist. Danach fragst du ab ob sich der Cursor innerhalb eines Vierecks (Ersatz für den Button) befindet. Anschließend kannst du dann das jeweilige
Ereignis aufrufen.

Hier ist ein kleines Beispiel um zu zeigen wie ich das meine:

Code:
#Include <Misc.au3>

If _IsPressed(01) And WinGetState("Weltkarte") = 15 Then
       $coord = MouseGetPos()
       If $coord[0] >= 50 And $coord[0] <= 80 And $coord[1] >= 50 And $coord[1] <= 70 Then
                ....
                ....
       Else If $coord[0] >= 230 And $coord[0] <= 280 ....
                ....
       EndIf
EndIf
Ich hoffe mal das haut so ungefähr hin

Variante 2 ist einfacher:

Du erstellst eine leere Picture Box z.B. GuiCtrlCreatePic("",50,50,30,20),
versiehst diese mit einer Funktion und den OnTop Attribut GuiCtrlSetState($pic,$GUI_ONTOP)

MfG Mankana
Dankeschön :-D