Bitmaps mit möglichst geringem Performanceverlust drehen
-
Benutzt gar nicht alles ASM ! http://www.programmersheaven.com/zone10/cat345/15441.htm
-
Könntest du dir nicht eine etwas inteligentere art überlegen?
-
hmmm wenn ich so etwas benutzen würde:
double cosT,sinT; cosT = cos(t); sinT = sin(t); for (y = min_y; y <= max_y; y++) { x' = (min_x-x1) * cosT + (y-y1) * sinT + x1'; y' = (y-y1) * cosT - (min_x-x1) * sinT + y1'; for (x = min_x; x <= max_x; x++) { if (x', y') is in the bounds of the bitmap, get pixel(x', y') and plot the pixel to (x, y) on screen. x' += cosT; y' -= sinT; } }
Dann wird immernoch sowas wie GetPixel udn SetPixel benutzt....jedoch allein schon wenn ich das ganze Bild einfahc nur per Get und SetPixel nochmal zeichen dauert dies eine halbe Ewigkeit..........
hmhmhm..dass das so schwer istKevin
-
beschäftige dich erstmal mit spieleprogrammierung. dann weißt du das man das sicherlich nicht so macht
-
bla - müssen solche postings sein? Ich will nur ein Bitmap rotieren....jetzt fängt schon wieder dieses sinnlos geposte an - na super
-
Ntürlich kannst du GetPixel und SetPixel verwenden, aber du könntest die Pixel auch in einem mit CreateDIBSection erzeugten Bitmap direkt manipulieren, das erlaubt dir direkten Speicherzugriff ... ohne DC ... is schnell
-
hm un wie?
Ich weiß dass ich get/setpixel verwenden kann aber das is halt furchtbar langsam...
-
Mit PlgBlt(...) ???
-
Windows 95/98/Me: Unsupported.
-
Original erstellt von Surkevin:
hm un wie?
Ich weiß dass ich get/setpixel verwenden kann aber das is halt furchtbar langsam...Richtig! Deshalb sollste ja auch DIBSections verwenden! Oder setz die Pixel mit SetDIBits(). Aber mit DIBSections geht's ganz sicher schneller. Schau in der MSDN nach CreateDIBSection().