Rubrik: Grafik und Font · Grafische Effekte | VB-Versionen: VB2005, VB2008, VB2010 | 14.09.11 |
Bitmap um beliebigen Winkel drehen Mit dieser Funktion lässt sich ein Bild (Bitmap) um einen beliebigen Winkel drehen. | ||
Autor: Dieter Otter | Bewertung: | Views: 16.663 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Für das Drehen eines Bildes stellt uns die Bitmap-Klasse die RotateFlip-Methode bereit.
Der Nachteil an dieser Methode: Das Bild lässt sich nur in fest vorgegebenen Winkeln drehen (90°, 180° und 270°).
Daher möchten wir Ihnen nachfolgende Funktion vorstellen, mit der sich das Bild um einen beliebigen Winkel drehen lässt.
''' <summary> ''' Bild in beliebigem Winkel drehen ''' </summary> ''' <param name="bitmap">Original-Bild (Bitmap)</param> ''' <param name="angle">Winkel, um den das Bild gedreht werden soll</param> ''' <returns>Bitmap-Objekt</returns> Public Function ImageRotate(ByVal bitmap As Bitmap, ByVal angle As Single) As Bitmap ' Bei 90!, 180° oder 270° verwenden wir die schnellere ' RotateFlip-Methode des Bitmap-Objekts Select Case angle Case 90 bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone) Case 180 bitmap.RotateFlip(RotateFlipType.Rotate180FlipNone) Case 270 bitmap.RotateFlip(RotateFlipType.Rotate270FlipNone) Case Else Dim dx As Single = CSng(bitmap.Width) Dim dy As Single = CSng(bitmap.Height) ' bei allen anderen Winkelangaben ... Using gr As Graphics = Graphics.FromImage(bitmap) gr.TranslateTransform(dx / 2, dy / 2) gr.RotateTransform(angle) gr.TranslateTransform(-dx / 2, -dy / 2) gr.DrawImage(bitmap, New Point(0, 0)) End Using End Select Return bitmap End Function