[B2D] DrawImagePitch, DrawImageYaw
Übersicht

![]() |
SpionAtomBetreff: [B2D] DrawImagePitch, DrawImageYaw |
![]() 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 |
![]() 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 |
![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nicht schlecht.... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group