Forum huvudsida -> Programmering -> Rotera bmp
Sidor: 1
Celeron | 08:08 - 10:e April 2005 | Post #1 | |
Medlem Inlägg: 418 Skicka PM |
Hur roterar man en .bmp (bitmap) i Win API? ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
sdac | 20:33 - 11:a April 2005 | Post #2 | |
Medlem Inlägg: 235 Skicka PM |
Win32-API:n till bilder? ;O Läs om GDI. |
madah | 01:52 - 13:e April 2005 | Post #3 | |
Medlem Inlägg: 28 Skicka PM |
http://www.codeguru.com/Cpp/G-M/gdi/article.php/c3693/ Fast koden till den ovan verkade vara lite rörig, här är lite bättre pseudo-kod: SinTheta = Sin( AngleInRadians ); CosTheta = Cos( AngleInRadians ); CenterX = Width / 2; CenterY = Height / 2; for(int Y=0; Y<Height; Y++) { for(int X=0; X<Width; X++) { SourceX = CenterX + (X-CenterX)*CosTheta - (Y-CenterY)*SinTheta; SourceY = CenterY + (X-CenterY)*SinTheta + (Y-CenterY)*CosTheta; if( ( SourceX >= 0 ) && ( SourceX < Width ) && ( SourceY >= 0 ) && ( SourceY < Height ) ) { DestBitmap[X, Y] = SourceBitmap[SourceX, SourceY]; } else { // ge svart färg till området utanför bilden DestBitmap[X, Y] = 0; } } } |
Celeron | 06:48 - 13:e April 2005 | Post #4 | |
Medlem Inlägg: 418 Skicka PM |
Jag förstår inte riktigt. Kan du förklara lite mer vad dom olika sakerna gör. Jag förstår att det loopar igenom alla y pixlar och x pixlar och vad CenterY och CenterX är, men vad är t ex DestBitmap? ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
void | 13:21 - 13:e April 2005 | Post #5 | |
Medlem Inlägg: 63 Skicka PM |
Han gör en kopia av bilden. För varje pixel i utbilden (den roterade) beräknar han en punkt i inbilden och sätter dess pixelvärde i den roterade bilden. OK om man gör det en gång, men ska du rotera bilden "dynamiskt" bör du nog använda interna metoder i ditt grafikbibliotek (SDL,GDI, etc.). Dessutom kör han med nearest-inperpolation (alltså ingen interpolation)... det blir inte så snyggt =) ------------------------- Ingen signatur! |
Celeron | 13:33 - 13:e April 2005 | Post #6 | |
Medlem Inlägg: 418 Skicka PM |
Jag använder alltså GDI. Har inte hittat någon sådan funktion som roterar en bild. Vet du någon? ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
void | 13:51 - 13:e April 2005 | Post #7 | |
Medlem Inlägg: 63 Skicka PM |
En googling på "gdi rotate" ger: http://www.codeguru.com/Cpp/G-M/gdi/article.php/c3693/ ------------------------- Ingen signatur! |
Celeron | 15:53 - 13:e April 2005 | Post #8 | |
Medlem Inlägg: 418 Skicka PM |
Det är samma länk som madha gav mig och den gör mig inte klokare... ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
madah | 17:19 - 13:e April 2005 | Post #9 | |
Medlem Inlägg: 28 Skicka PM |
Citat av void: Dessutom kör han med nearest-inperpolation (alltså ingen interpolation)... det blir inte så snyggt =) ,,sch då Fortfarande pseudo-kod:
Om man vill kolla så man inte hamnar utanför bilden, så byt ut det understa i förra mot detta:
Koden ovan fungerar egentligen bara bra med gråskalebilder. Om det är färg måste man separera och köra interpoleringen separat för röd, grön och blå. Jag tog inte med det för att inte röra till koden, men jag kanske kan skriva ihop en hel tutorial vid ett senare tillfälle. Senast redigerad 17:22 - 13:e April 2005 |
Celeron | 15:21 - 14:e April 2005 | Post #10 | |
Medlem Inlägg: 418 Skicka PM |
Tack. Nu förstår jag lite mer! ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
Sidor: 1
Forum huvudsida -> Programmering -> Rotera bmp
Du får inte posta i den här tråden | Till toppen
Datum
2024-05-05 19:37
Vecka: 18
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.