Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 608
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Bild rotieren mit C#


Autor: Kevin Gerndt
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 3523
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit dieser Funktion lässt sich ein Bild rotieren. Zurückgeliefert wird ein Objekt vom Typ Bitmap mit der angewendeten Rotation.

Abgelegt unter: Bild, Bitmap, Bitmap rotieren, Bild rotieren, Bitmap drehen, Bild drehen.



C#
1
2
3
4
5
6
7
8
9
10
public Bitmap rotateImage(Bitmap bitmap, float angle)  
{  
     Bitmap returnBitmap = new Bitmap(bitmap.Width, bitmap.Height);  
     Graphics graphics = Graphics.FromImage(returnBitmap);  
     graphics.TranslateTransform((float)bitmap.Width / 2, (float)bitmap.Height / 2);  
     graphics.RotateTransform(angle);  
     graphics.TranslateTransform(-(float)bitmap.Width / 2, -(float)bitmap.Height / 2);  
     graphics.DrawImage(bitmap, new Point(0, 0));  
     return returnBitmap;  
} 
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Martin Dauskardt schrieb am:  19.06.2011 16:12:35

Mein Vorschlag:


public Bitmap rotateImage(Bitmap bitmap, float angle)
{
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.TranslateTransform((float)bitmap.Width / 2, (float)bitmap.Height / 2);
graphics.RotateTransform(angle);
graphics.TranslateTransform(-(float)bitmap.Width / 2, -(float)bitmap.Height / 2);
graphics.DrawImage(bitmap, new Point(0, 0));
}
return bitmap;
}
bestel schrieb am:  19.06.2011 18:35:21

Das kann doch die Bitmap Klasse auch schon von Haus aus.
Beispiel:
Bitmap btmp1 = new Bitmap();
btmp1.RotateFlip(RotateFlipType.Rotate180FlipX);
Kevin Gerndt schrieb am:  20.06.2011 01:11:52

Könnte mir vorstellen, dass meine Methode über die graphics methode schneller ist ... müsste man mal ausprobieren
Curry schrieb am:  20.06.2011 09:37:43

Das bezweifle ich stark, dass es über ein Graphics-Objekt schneller geht.
GDI+ ist relativ langsam und sollte für solche Aufgaben lieber nicht verwendet werden.
Raffi schrieb am:  12.07.2011 08:08:14

@Curry & @Kevin:
Ich habe mich mal mit dem Thema welche Variante schneller ist auseinandergesetzt.
http://code-bude.net/2011/07/12/bilder-rotieren-mit-csharp-bitmap-rotateflip-vs-gdi-graphics/

Was das ursprüngliche Snippet angeht, finde ich die Lösung mit
Bitmap returnBitmap = new Bitmap(bitmap.Width, bitmap.Height);  

eher ungünstig, da vor allem bei der Bearbeitung vieler Bilder schnell der Speicher an seine Grenzen stößt.

Viele Grüße,
Raffi
Curry schrieb am:  19.07.2011 15:25:18

@Raffi:
Vielen Dank, dass du dich mit dem Thema auseinandergesetzt hast!
Sehr interessant, wie ich finde :-)


Diese Snippets könnten für Sie interessant sein:
[VB.NET] Bildgröße verändern (Verhältnis)
[VB.NET] Bildgröße verändern (Prozentual)
[VB.NET] Bildgröße verändern (Manuell)
[VB.NET] Neues Größenverhältnis eines Bilds berechnen
[VB.NET] JPEG Bild komprimieren
[VB.NET] Bild Transparent machen mit ColorMatrix
[VB.NET] Farben eines Bilds umkehren
[VB.NET] Bild in Graustufen umwandeln
[C#] GDI+ und das Paint Event
[C#] Bild anzeigen - Datei schließen
[VB.NET] Text auf Bild zeichnen
[C#] Größe verändern von Bildern
[ASP.net] Datei nach Bildupload prüfen
[C#] GetEuclidicDistance
[VB.NET] Bitmap Differenz Analyse
[VB.NET] Verschlüsslung von Dateien mit Vernam
[C#] Bild drehen (nach Winkelangabe)
[C#] Bildgröße im Verhältnis verändern (Interpoliert)
[C#] Bild von einem Control oder Panel
[VB.NET] Bildausschnitt auslesen
[VB.NET] Bildgröße im Verhältnis verändern (Interpoliert)
[VB.NET] Bildgröße prozentual verändern (Interpoliert)
[VB.NET] Bildgröße in beiden Dimensionen verändern (Interpoliert)
[VB.NET] Alle Pixel einer bestimmten Farbe neu einfärben
[C#] Bild steht auf reflektierendem Grund
[C#] Bilder verkleinern, beschneiden und beides gleichzeitig
[C#] Bild splitten
[VB.NET] Bytearray to Image / Image to Bytearray
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Hintergrundfarbe Transparenter Bilder (z.B. PNG) ändern
[C#] Größe eines Bildes mit mit gleichem Seitenverhältniss ändern
[C#] externes Programm aufrufen (andere Version) mit Parameter
[C#] Herausfinden welches Programm ein bestimmtes Dokument öffnet
[C#] Bitmap schneller in Graustufen wandeln
[C#] Bilder aus *.resx Ressourcen Dateien in WPF verwenden
[VB.NET] Bild mit allen farben (True Color 16 Millionen Farben)
[C#] Schwarzweiß Bilder mit einem Farbverlauf füllen
[C#] Bild beim Zeichnen invertieren
[C#] Floyd Steinberg Dithering
[C#] Bitmap in Graustufen wandeln
[C#] Square Thumbnail generieren
[C#] Image in string wandeln und zurück
[VB.NET] Bitmap Header auslesen (File & Info)
[C#] base64 codierten String in eine Bitmap umwandeln
[C#] Bitmap in base64 codierten String wandeln
[C#] Bitmap in Icon konvertieren
[C#] ExtractAssociatedIcon
[VB.NET] Let your image glow - Bild glühen lassen
[C#] Custom Cursor

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.