[B2D] DrawImagePitch, DrawImageYaw
Übersicht BlitzBasic
 BlitzBasic  Codearchiv
 Codearchiv|   | SpionAtomBetreff: [B2D] DrawImagePitch, DrawImageYaw |  Sa, Apr 18, 2009 0:15 Antworten mit Zitat   | 
|---|---|---|
| RotateImage-Pseudo-3D-Ergänzungen Da das ganze Bild ausgelesen wird, ist die Echtzeittauglichkeit beschränkt. Bei kleineren Bildern sollte es kein Problem darstellen. DrawImageYaw dreht ein Bild an der Bildmittleren vertikalen Achse DrawImagePitch dreht ein Bild an der Bildmittleren horizontalen Achse Winkel - benötigte Hilfsfunktion DrawImageYaw(pic, posX, posY, angle) DrawImagePitch(pic, posX, posY, angle) pic - ImageHandle posX, posY - Zeichen-Position angle - Drehwinkel Code: [AUSKLAPPEN] ;RotateImage-Pseudo-3D-Ergänzungen
 ;(nicht unbedingt für Echtzeit geeignet) ; ;DrawImageYaw dreht ein Bild an der Bildmittleren vertikalen Achse ;DrawImagePitch dreht ein Bild an der Bildmittleren horizontalen Achse ; ;von SpionAtom ; ;DrawImageYaw(pic, posX, posY, angle) ;DrawImagePitch(pic, posX, posY, angle) ; pic - ImageHandle ; posX, posY - Zeichen-Position ; angle - Drehwinkel Graphics 320, 240, 0, 2 SetFont(LoadFont("Courier", 20)) ;Beispielbild erstellen pic = CreateImage(210, 20) SetBuffer ImageBuffer(pic) For i = 1 To ImageWidth(pic) - 2: For j = 0 To ImageHeight(pic) - 2 WritePixel i, j, i * $10000 + j * $100 Next: Next Rect 0, 0, 210, 20, 0 Text 0, 0, "S P I O N A T O M" SetBuffer BackBuffer() Repeat a = (a + 1) Mod 360 Cls Text 0, 0, a DrawImageYaw pic, 55, 80, a * 2 DrawimagePitch pic, 55, 140, a * 4 Flip() Until KeyDown(1) End Function DrawImageYaw(pic, posX, posY, angle) w = ImageWidth(pic) h = ImageHeight(pic) r = w / 2 npic = CreateImage(w, h) LockBuffer ImageBuffer(pic) LockBuffer ImageBuffer(npic) For x = 0 To w - 1 For y = 0 To h - 1 rpix = ReadPixelFast(x, y, ImageBuffer(pic)) WritePixelFast(r - Sin(angle) * (r - x), y, rpix, ImageBuffer(npic)) Next Next UnlockBuffer ImageBuffer(pic) UnlockBuffer ImageBuffer(npic) DrawImage npic, posX, posY End Function Function DrawImagePitch(pic, posX, posY, angle) w = ImageWidth(pic) h = ImageHeight(pic) r = h / 2 npic = CreateImage(w, h) LockBuffer ImageBuffer(pic) LockBuffer ImageBuffer(npic) For x = 0 To w - 1 For y = 0 To h - 1 rpix = ReadPixelFast(x, y, ImageBuffer(pic)) WritePixelFast(x, r - Sin(angle) * (r - y), rpix, ImageBuffer(npic)) Next Next UnlockBuffer ImageBuffer(pic) UnlockBuffer ImageBuffer(npic) DrawImage npic, posX, posY End Function ;Berechnet den Winkel zwischen der X-Achse und einer Geraden durch zwei Punkte Function Winkel#(x1#,y1#,x2#,y2#) Return (360+ATan2(x1#-x2#,y1#-y2#)) Mod 360 End Function | ||
| os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 | ||
- Zuletzt bearbeitet von SpionAtom am Sa, Apr 18, 2009 10:52, insgesamt einmal bearbeitet
|   | Kernle 32DLL |  Sa, Apr 18, 2009 0:44 Antworten mit Zitat   | 
|---|---|---|
| Es fehlt ein End Function *hust* Aber ansonsten eine wirklich tolle Sache. Fehlt nurnoch die Kombination aus beidem   So long, Kernle | ||
| Mein PC: "Bluelight" - Xtreme Gamer PC [Video] Meine Projekte: Cube-Wars 2010 [Worklog] Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89 Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009 | ||
|   | Nicdel |  Sa, Apr 18, 2009 0:49 Antworten mit Zitat   | 
|---|---|---|
| Wirklich nützliche Funktionen, z.B. für Logoeinblendungen. Mfg Nicdel | ||
| Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 | ||
| Magier Gandalf |  So, Jul 26, 2009 12:36 Antworten mit Zitat   | |
|---|---|---|
| Nicht schlecht.... | ||
Übersicht
 BlitzBasic
 BlitzBasic  Codearchiv
 Codearchiv
					Powered by phpBB © 2001 - 2006, phpBB Group
				



