2009-08-13 6 views
0

Ich habe ein Bitmap Objekt, das ich manchmal horizontal, manchmal vertikal, manchmal beide horizontal spiegeln muss. Das vollständige Framework hat die Image.RotateFlip() Methode, die genau das ist, was ich brauche. Leider, wie die meisten nützlichen Features im gesamten Framework, existiert diese Methode nicht auf dem kompakten Framework. Gibt es einen einfachen Weg, dies zu tun? Das beste, was ich finden konnte, war , aber es verwendet unsafe Code, den ich vermeiden möchte, und er konnte nur Rotation nicht spiegeln.Flip-Bitmap in .NET Compact Framework

Edit: Ok, ich habe einen Weg gefunden, einige Optimierungen durchzuführen, wo ich nur einen vertikalen Flip machen muss.

+0

Jason, der gleiche Link verwendet eine "sichere" Methode zu rotieren. Es sagt, dass es fast 3 Minuten dauerte, um eine 90 Grad Drehung auf einem 800x600 Pixel Bild zu machen, das mir viel zu lang erscheint. Ich würde es auf Ihrem Gerät versuchen, um zu sehen, wie es funktioniert und vielleicht nach einem Flaschenhals suchen. Nach meiner Erfahrung sind die get und set Pixel Methoden ziemlich schnell. Außerdem ist es nur ein winziger Schritt in der Logik von der Drehung zum Umdrehen ... –

+1

Warum unsicheren Code vermeiden? Es ist schnell, es funktioniert, und es ist völlig legal in der Sprache. – ctacke

Antwort

2

Die CF unterstützt dies nicht, aber wenn Ihr Gerät die Imaging-Bibliothek unterstützt, können Sie P/Invoke bis IBasicBitmapOps::Flip aufrufen. Die SDF hat dies bereits in der OpenNETCF.Drawing.Imaging.ImageUtils Klasse verpackt.

+0

Das ist, was ich gesucht habe. Ich hatte es bereits selbst implementiert mit unsicheren Zeiger Manipulation, aber das ist wahrscheinlich der sicherere Weg zu gehen. – Jason

1

Ich habe kürzlich einen Artikel darüber gelesen. Ich habe es nicht versucht, weil ich andere Drehungen als 90/180/270 benötige, aber es behauptet, eine schnelle Weise zu sein zu drehen.

http://www.codeproject.com/KB/graphics/ImageRotationForCF.aspx

[Bearbeiten] verdammt, ich lese nicht richtig, Sie dies bereits gefunden .. sorry.