Seite 3 von 7
Verfasst: 20.07.2006 22:30
von Falko
@KaeruGamen
Das mit dem:
>>aber noch mal grundsätzlich: Screens sind für Spiele-geschichten.
hast'e gut getroffen.
Hätte Fred meinen Wunsch (siehe vorherigen Link) erfüllt, wären heute vielleicht einige Grafikfunktionen für Vectorgrafik in PB hinzugekommen.
Grüße Falko
Verfasst: 20.07.2006 22:34
von Brügge
also mit 3.90 demo würde ich das so machen:
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
naja also wenn das so soll dann helf ich dir auch wohl beim rest
mfg T.Brügge
Verfasst: 20.07.2006 22:37
von Kaeru Gaman
> (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...
danke kaeru gaman
Verfasst: 20.07.2006 22:39
von GreyEnt
werde ich mal versuchen.
WoW Brügge.
Verfasst: 20.07.2006 22:47
von GreyEnt
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
Verfasst: 20.07.2006 23:00
von Kaeru Gaman
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...
frage nebenbei
Verfasst: 20.07.2006 23:39
von GreyEnt
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?
Verfasst: 20.07.2006 23:43
von MVXA
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 
Verfasst: 20.07.2006 23:47
von Falko
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
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
[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
auch nicht schlecht.
Verfasst: 20.07.2006 23:53
von GreyEnt
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.