probleme mit rotateimage[erledigt]
Übersicht

feuerball11Betreff: probleme mit rotateimage[erledigt] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wen ich das bild über rotateimage drehe(code am schluss) dan wird es komplett unscharf und dreht sich immer langsamer bis garnicht mehr....
also. was ist daran falsch:: Code: [AUSKLAPPEN] If KeyDown(200) Then
x# = x# + Cos(winkel) y# = y# - Sin(winkel) EndIf If KeyDown(203) Then winkel = winkel +2 If winkel > 360 Then winkel = winkel - 360 If winkel < 0 Then winkel = winkel + 360 RotateImage bild,2 EndIf If KeyDown(205) Then winkel = winkel -2 If winkel > 360 Then winkel = winkel - 360 If winkel < 0 Then winkel = winkel + 360 RotateImage bild,-2 EndIf |
||
- Zuletzt bearbeitet von feuerball11 am Mo, Apr 06, 2009 15:44, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das übliche Tformfilter![]() Die benötigten Zwischenschritte vor dem Hauptprogramm berechnen oder eine Userlib wie Draw3D verwenden um sich diesen zeitaufwändigen Prozess zu ersparen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am Mo, Apr 06, 2009 15:08, insgesamt einmal bearbeitet
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rotateimage![]() Und anstatt immer das vorherige Bild ein Grad weiterzudrehen ist es besser immer das Originalbild zu nehmen (0°), zu kopieren und das zu drehen(2°, 4°, 6°....). |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schön und gut..... jetzt gehts zwar, aber das bild dreht sich irgendwie in eine falsche richtung....
also nochmal: was ist daran falsch: Code: [AUSKLAPPEN] Graphics 400,400,0,2
;----grafik----- Global bild = CreateImage(20,20) SetBuffer ImageBuffer (bild) Rect 0,0,20,20 Color 255,0,0 Rect 0,0,20,5 Color 255,255,255 SetBuffer BackBuffer() MidHandle bild Global bild2 = CopyImage (bild) MidHandle bild2 ;----globals----- Global x# = 200 Global y# = 200 Global winkel = 90 ;-----timer----- timer = CreateTimer(60) ;----haupt----- Repeat Cls update_player draw_player Flip WaitTimer (timer) Until KeyHit(1) ;-----functionen----- Function draw_player() DrawImage bild2,x,y Text 10,10,lager End Function Function update_player() If KeyDown(200) Then x# = x# + Cos(winkel) y# = y# - Sin(winkel) EndIf If KeyDown(203) Then winkel = winkel +2 If winkel > 360 Then winkel = winkel - 360 If winkel < 0 Then winkel = winkel + 360 bild2 = CopyImage (bild) RotateImage bild2,winkel EndIf If KeyDown(205) Then winkel = winkel -2 If winkel > 360 Then winkel = winkel - 360 If winkel < 0 Then winkel = winkel + 360 bild2 = CopyImage (bild) RotateImage bild2,winkel EndIf End Function |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da Rotateimage sehr rechenaufwendig ist kannst du das ganze vorher drehen und jeden schritt, noch besser jeden 2ten (merkt man nicht und geht schneller) in einem Dim Feld speichern.
Dies ist zwar einigermassen schnell, aber bei mehrern Objekten usw wird es trotzdem langsam Was Xeres mit Draw3D meinte, werde ich dir kurz Erklären Du nimmst einen Würfel (oder ein Plane, nicht weiter wichtig) und maskierst ihn mit dem gewünschten bild, nun kannst du ihn in echzeit drehen (da es dank DirectX nur ein paar millisekunden braucht) Da du den Würfel nur von oben siehst, denkst du es sei ein ganz normales Bild. Das ganze kannst du natürlich selber einbauen (solang du B3D hast) oder die bequeme Version nehmen, also Draw3D. Hoffe es ist verständlich ![]() mfg |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
es nutzt ja nicht jedes spiel draw 3d... also wie machen die das dann??? | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie ozzi789 es in seinen ersten Satz erklärt hat. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 400,400,0,2
;----grafik----- TFormFilter 1 Global bild = CreateImage(20,20) SetBuffer ImageBuffer (bild) Rect 0,0,20,20 Color 255,0,0 Rect 15,0,20,20 Color 255,255,255 SetBuffer BackBuffer() MidHandle bild Global bild2 = CopyImage (bild) MidHandle bild2 ;----globals----- Global x# = 200 Global y# = 200 Global winkel = 0 ;-----timer----- timer = CreateTimer(60) ;----haupt----- Repeat Cls update_player draw_player Flip WaitTimer (timer) Until KeyHit(1) ;-----functionen----- Function draw_player() DrawImage bild2,x,y Text 10,10,lager End Function Function update_player() If KeyDown(200) Then x# = x# + Cos(winkel) y# = y# + Sin(winkel) EndIf If KeyDown(203) Then winkel = winkel -2 If winkel > 360 Then winkel = 1 If winkel < 0 Then winkel = 360 bild2 = CopyImage (bild) RotateImage bild2,winkel EndIf If KeyDown(205) Then winkel = winkel +2 If winkel > 360 Then winkel = winkel - 360 If winkel < 0 Then winkel = winkel + 360 bild2 = CopyImage (bild) RotateImage bild2,winkel EndIf End Function Eigentlich könntest du das ja selber machen ![]() Coden=Rumpröbeln ![]() Was ich geändert habe => TFormFilter 1 x# = x# + Cos(winkel) y# = y# + Sin(winkel) bei 203 - und bei 205 + und was soll das??Code: [AUSKLAPPEN] MidHandle bild Global bild2 = CopyImage (bild) MidHandle bild2 O_o |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
feuerball11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
an ozi:
danke. ich glaube ich habe jetzt selber ne lösung... und der code-teil stammt aus einem gröseren code... da muss ich das ausversehen mit kopiert haben,..... also meine lösung sieht jetzt so aus: Code: [AUSKLAPPEN] Graphics 400,400,0,2
;----grafik----- Dim bild(179) Global bildt = CreateImage(20,20) SetBuffer ImageBuffer (bildt) Rect 0,0,20,20 Color 255,0,0 Rect 15,0,5,20 Color 255,255,255 SetBuffer BackBuffer() MidHandle bildt For i = 0 To 179 bild(i) = CopyImage (bildt) RotateImage bild(i),i*2 MidHandle bild(i) Next ;----globals----- Global x# = 200 Global y# = 200 Global winkel = 0 ;-----timer----- timer = CreateTimer(60) ;----haupt----- Repeat Cls update_player draw_player Flip WaitTimer (timer) Until KeyHit(1) ;-----functionen----- Function draw_player() DrawImage bild(winkel/2),x,y End Function Function update_player() If KeyDown(200) Then x# = x# + Cos(winkel) y# = y# + Sin(winkel) EndIf If KeyDown(203) Then winkel = winkel -2 If winkel > 358 Then winkel = winkel - 358 If winkel < 2 Then winkel = winkel + 358 EndIf If KeyDown(205) Then winkel = winkel +2 If winkel > 358 Then winkel = winkel - 358 If winkel < 2 Then winkel = winkel + 358 EndIf End Function |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schon besser, aber ich denke, 1 mal mid/auto handle sollte genug sein | ||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group