mausklick im canvas fenster finden...

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

x_to

Betreff: mausklick im canvas fenster finden...

BeitragMi, Aug 16, 2006 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kann ich in einem canvas fenster einen linken mausklick feststellen, bzw. abfragen..???

mit mousedown() klappts leider nicht.... Sad

irgendjemand andere ideen..??

Cardonic

BeitragMi, Aug 16, 2006 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If WaitEvent() = $201 Then
    MX = EventX()
    MY = EventY()
EndIf


mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

x_to

BeitragMi, Aug 16, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...funktioniert nur bei gadgets, aber nicht bei einem klick im canvas fenster....

andere möglichkeiten...???

Cardonic

BeitragMi, Aug 16, 2006 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Ein Canvas ist ein Gadget.
2. Es funktioniert auch bei Canvas-Objekten
Code: [AUSKLAPPEN]
Window = CreateWindow("",100,100,300,250,0,1)

Canvas = CreateCanvas(5,5,ClientWidth(Window)-10,ClientHeight(Window)-10,Window)

Repeat
   Select WaitEvent()
      Case $201
         If EventSource() = Canvas Then
            Notify EventX()+" x "+EventY()
         EndIf
      Case $803
         End
   End Select
Forever

Oder habe ich deine Frage falsch verstanden ?

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

x_to

BeitragDo, Aug 17, 2006 5:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, jetzt gehts...danke...hab irgendwie was falsch gemacht... Smile

hattest mich schon richtig verstanden... Very Happy
 

Dreamora

BeitragDo, Aug 17, 2006 7:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Was eventuell sein könnte ist das das Canvas Gadget vorher nicht aktiviert war. Dann gibts auch keine Events von ihm.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

$tankY

BeitragMo, Aug 21, 2006 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfacher:
Code: [AUSKLAPPEN]

MouseX(Canvas) ;<---- Canvas in die Klammern schreiben
MouseY(Canvas)
;Und eben dann Event $201
 

x_to

BeitragSo, Jan 25, 2009 23:58
Antworten mit Zitat
Benutzer-Profile anzeigen
gibt es auch die möglichkeit in BlitzPlus die maus abzufragen, ob es nur ein klick war oder der mausbutton noch gedrückt ist..???

z.b. ein malwerkzeug in einem canvas fenster....für jeden einzelnen pixel müßte man den linken button ewig neu klicken....

ich wollte die möglichkeit bieten zu zeichnen, während die taste gedrückt ist...

gibts das..???

Valnar

BeitragMo, Jan 26, 2009 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
MouseDown und MouseHit ???
 

x_to

BeitragMo, Jan 26, 2009 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ich kenne die funktionen, allerdings funktionieren sie nicht im eventhandler...Sad

Code: [AUSKLAPPEN]
Repeat
   Select WaitEvent()
      Case $201
         Select EventSource()
                                Case canvas_main
               Select EventData()
                  Case 1
                     Select SelectedGadgetItem(tabTabber0)
                        Case 0
                           map_data(get_column(),get_row()) = tile_id
                           draw_map()
                        Case 1
                           coll_data(get_column(),get_row()) = mask_id
                           draw_map()
                     End Select   
                  Case 2
               End Select
               
         End Select
      End Select
   


irgendjemand andere ideen ???

flona

BeitragMo, Jan 26, 2009 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Frag halt des Event $101 ab und wenn EventData() deine Taste enthält setzt du eine Globale Var auf True. Bei Event $102 setzt du sie wieder auf False. So weißt du immer ob sie gerade gedrückt wird.

EDIT: Ich weiß auch nicht wie ich da auf Tasten gekommen bin. Des ganze natürlich für Maus
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit
  • Zuletzt bearbeitet von flona am Di, Jan 27, 2009 14:49, insgesamt einmal bearbeitet

Starwar

BeitragMo, Jan 26, 2009 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Abend,
KOMPLETT-EDIT 2
Code: [AUSKLAPPEN]

Type linien
   Field x1%
   Field y1%
   Field x2%
   Field y2%
End Type

win = CreateWindow ("Test",10,10,800,600,0,01)
restorewindow win
can = CreateCanvas (20,20,640,480,win)
SetBuffer canvasbuffer(can)
Repeat
   ev=WaitEvent()
   es=EventSource()
   ed=EventData()
   If ev=$201 And es=can And ed= 1 Then
      draw=True
      linie.linien = New linien
      linie\x1=MouseX(can)
      linie\y1=MouseY(can)
   EndIf
   If ev=$203 And es=can And draw=True Then
      linie\x2=MouseX(can)
      linie\y2=MouseY(can)
      Cls
      For drawlinie.linien = Each linien
         Line drawlinie\x1,drawlinie\y1,drawlinie\x2,drawlinie\y2
      Next
      flipcanvas(can)
      tmpX = linie\x2
      tmpY = linie\y2
      linie.linien = New linien
      linie\x1=tmpX
      linie\y1=tmpY
   EndIf
   If ev=$202 And ed=1 Then
      draw=False
      linie\x2=MouseX(can)
      linie\y2=MouseY(can)
   EndIf
Until ev=$803 And es=win
End

So könntest du es machen. Fehlen tut noch ein Test, ob sich der Mauszeiger überhaupt noch im Canvas befindet, aber das solllte kein Problem sein. (Es hat noch nen kleinen Bug: Wenn du malst, loslässt, kurz iwo im fenster wo kein Canvas ist klickst und dann wieder im Cnvas malst, kommen komische Linien. ABer das obere ist ja nur das Prinzip mal ganz grob skizziert Smile )
MFG

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group