Abfrage des Mausklicks
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
also mit 3.90 demo würde ich das so machen:
naja also wenn das so soll dann helf ich dir auch wohl beim rest
mfg T.Brügge
Code: Alles auswählen
InitSprite()
InitKeyboard()
InitMouse()
OpenScreen(1280,1024,32, "CAD")
StartSpecialFX()
Dim maushintergrund(9,9)
Repeat
ExamineKeyboard()
ExamineMouse()
If KeyboardPushed(#PB_Key_Escape)
esc = 1
EndIf
StartDrawing(ScreenOutput())
For i = 0 To 9
For j = 0 To 9
maushintergrund(i,j) = Point(MouseX()+i,MouseY()+j)
Next j
Next i
FrontColor(255,255,255)
Box (MouseX()+1,MouseY()+1,8,8)
FrontColor(255,0,0)
Line(MouseX(),MouseY(),9,0)
Line(MouseX(),MouseY(),0,9)
StopDrawing()
FlipBuffers()
zeichnen = 0
If MouseButton(1)
If druck1 = 0
x1 = MouseX()
y1 = MouseY()
EndIf
druck1 = 1
Else
If druck1 = 1
x2 = MouseX()
y2 = MouseY()
zeichnen = 1
EndIf
druck1 = 0
EndIf
StartDrawing(ScreenOutput())
FrontColor (0,255,0)
If zeichnen = 1
LineXY(x1,y1,x2,y2)
EndIf
StopDrawing()
zeichnen = 0
FlipBuffers()
StartDrawing(ScreenOutput())
For i = 0 To 9
For j = 0 To 9
Plot (MouseX()+i,MouseY()+j,maushintergrund(i,j))
Next j
Next i
StopDrawing()
Until esc = 1
mfg T.Brügge
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> (siehe vorherigen Link)
die anfrage war ja schon von 2003...
gibt aber doch nen API-call um den linientyp zu beeinflussen...
hatte erst vor ner Weile was in der Lounge gesehen...
> Grafikfunktionen für Vectorgrafik
polardarstellung umrechnen könnte man vielleicht mit nem macro machen,
und nunja, kreuzprodukt, matritzen..
müsst man halt mal schaun, wieviel rechenarbeit da überall drinne steckt,
könnte man aber bestimmt relativ performante minilösungen erarbeiten...
grundsätzlich hat sich da bestimmt auch remi schon mal gedanken gemacht,
sowas ist ja durchaus sein metier...
die anfrage war ja schon von 2003...
gibt aber doch nen API-call um den linientyp zu beeinflussen...
hatte erst vor ner Weile was in der Lounge gesehen...
> Grafikfunktionen für Vectorgrafik
polardarstellung umrechnen könnte man vielleicht mit nem macro machen,
und nunja, kreuzprodukt, matritzen..
müsst man halt mal schaun, wieviel rechenarbeit da überall drinne steckt,
könnte man aber bestimmt relativ performante minilösungen erarbeiten...
grundsätzlich hat sich da bestimmt auch remi schon mal gedanken gemacht,
sowas ist ja durchaus sein metier...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
danke kaeru gaman
werde ich mal versuchen.
WoW Brügge.
Wie kann man nur so schnell sein?
Ich fange wieder an Briefmarken zu sammeln.
Für sowas hätte ich Tage/ Wochen gebraucht.
Das Problem. Ich brauche ein Fenster für Gadgets/Statusbar/Menus.
deswegen ist diese Screen geschichte für mein dafürhalten undurchfürbar.
MfG
Dieter
Ich fange wieder an Briefmarken zu sammeln.

Für sowas hätte ich Tage/ Wochen gebraucht.
Das Problem. Ich brauche ein Fenster für Gadgets/Statusbar/Menus.
deswegen ist diese Screen geschichte für mein dafürhalten undurchfürbar.
MfG
Dieter
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
wär auf jeden fall viel schwieriger... soweit ich gehört hab, ist das garnicht einfach, screen und gadgets aufm selben fenster zu haben, besonders beim resizen gibts scherereien...
habs halt selber noch nicht ausprobiert, den windowed screen benutz ich nur als ersatz fürn fullscreen, dann nimmt das game halt das ganze fenster ein statt des ganzen bildschirms...
also.. womit du mal rumprobieren könntest...
du kannst ein image createn und auf nem imagegadget darstellen,
am besten ganz links oben in der ecke des fensters, dann hast du vorerst nix groß mit koordinaten umzurechnen.
bei nem mausclick ermittelst du die koordinaten WindowMouseX/Y-koordinaten,
und wenn die im bereich des imagegadgets sind, kannst du auf das image direkt zeichnen.
Startdrawing(ImageOutput(....
bei dem GetAsyncKeyState_(#vk_lbutton) bin ich mir jetzt nicht ganz sicher, ob man vorher noch was abfragen muss... find grad meinen code nich, wo ich das letztma benutzt hatte...
habs halt selber noch nicht ausprobiert, den windowed screen benutz ich nur als ersatz fürn fullscreen, dann nimmt das game halt das ganze fenster ein statt des ganzen bildschirms...
also.. womit du mal rumprobieren könntest...
du kannst ein image createn und auf nem imagegadget darstellen,
am besten ganz links oben in der ecke des fensters, dann hast du vorerst nix groß mit koordinaten umzurechnen.
bei nem mausclick ermittelst du die koordinaten WindowMouseX/Y-koordinaten,
und wenn die im bereich des imagegadgets sind, kannst du auf das image direkt zeichnen.
Startdrawing(ImageOutput(....
bei dem GetAsyncKeyState_(#vk_lbutton) bin ich mir jetzt nicht ganz sicher, ob man vorher noch was abfragen muss... find grad meinen code nich, wo ich das letztma benutzt hatte...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
frage nebenbei
diese geschichte GetAsyncKeyState_(#vk_lbutton)
hab ich noch nie in der Doku gefunden.
gibt es von diesen dingern die nicht in der Doku stehen noch mehr?
hab ich noch nie in der Doku gefunden.
gibt es von diesen dingern die nicht in der Doku stehen noch mehr?
klar, jede menge. Fred is so ein hunds gemeiner Typ und programmiert
tausende und noch mehr Funktionen und dokumentiert diese nicht in der
Hilfe, weist du?
http://www.purebasic.fr/german/viewtopic.php?t=14
tausende und noch mehr Funktionen und dokumentiert diese nicht in der
Hilfe, weist du?
http://www.purebasic.fr/german/viewtopic.php?t=14

- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Ich habe jetzt ohne diesen Screen.... mal was zusammen gesetzt.
Ist aber noch nicht richtig wie es soll.
Es soll auch nur als angefangenes Beispiel angesehen werden.
Im Moment bin ich auch wegen der Hitze zu Faul
[Edit] hab den Source noch etwas umgestellt.
Linke Maustaste irgendwo im Windows klicken und festhalten,
dann woanders loslassen. Jetzt müsste man nur noch die Linie
zwischendurch anzeigen z.B. durch XOR (quasi Gummibandfunktion).
Dieser Source arbeitet nur mit den #WM - Konstanten
[/Edit]
Grüße Falko
Ist aber noch nicht richtig wie es soll.
Es soll auch nur als angefangenes Beispiel angesehen werden.
Im Moment bin ich auch wegen der Hitze zu Faul

Code: Alles auswählen
;Procedure from einander , english forums!
Procedure Lin(x,y,x1,y1,Width,Color)
hDC=GetDC_(WindowID())
pen=CreatePen_(#PS_SOLID,Width,color)
hPenOld=SelectObject_(hDC,pen)
MoveToEx_(hDC,x,y,0):LineTo_(hDC,x1,y1)
DeleteObject_(pen)
DeleteObject_(hPenOld)
EndProcedure
;InitMouse()
_X=GetSystemMetrics_(#SM_CXSCREEN)-8 : _Y=GetSystemMetrics_(#SM_CYSCREEN)-68
OpenWindow(0,0,0,_X,_Y,#WS_OVERLAPPEDWINDOW ,"")
Repeat
event = WaitWindowEvent()
Select event
Case #WM_LBUTTONDOWN
x1 = WindowMouseX()
y1 = WindowMouseY()
Case #WM_LBUTTONUP
x2 = WindowMouseX()
y2 = WindowMouseY()
lin(x1,y1,x2,y2,2,#Red)
EndSelect
Until event = #PB_Event_CloseWindow
Linke Maustaste irgendwo im Windows klicken und festhalten,
dann woanders loslassen. Jetzt müsste man nur noch die Linie
zwischendurch anzeigen z.B. durch XOR (quasi Gummibandfunktion).
Dieser Source arbeitet nur mit den #WM - Konstanten

[/Edit]
Grüße Falko
Zuletzt geändert von Falko am 21.07.2006 00:56, insgesamt 6-mal geändert.
auch nicht schlecht.
so stell ich mir das vor.
wie Du oder Brügge linien zeichnen.
Wieviel seiten an Code darf man hier den rein Kopieren?
Dann könnte ich ja mal vorstellen was ich so gemacht habe.
und nun nicht wirklich weiterkomme.
wie Du oder Brügge linien zeichnen.
Wieviel seiten an Code darf man hier den rein Kopieren?
Dann könnte ich ja mal vorstellen was ich so gemacht habe.
und nun nicht wirklich weiterkomme.