Benutzer mit den meisten Antworten
Rotate Picturebox to any angle

Frage
-
Hoi Friends,
i want to rotate a picturebox to any angle.
I searched and found Rotate, but this ony works in specified angles.Here is my code so far:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click PictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipNone) PictureBox1.Refresh() Button1.Enabled = False Button2.Enabled = True Button3.Enabled = False Button4.Enabled = True End Sub
How is it possible to set the angle i.e. to 100 degrees, or 135 or something else ?
Also i like to make the movement slow, so that i can see the Picturebox.image (a knob) slowly move to the end position ?
Doei
Franz
Be a good forum member - mark posts that contain the answers to your questions or those that are helpful
Antworten
-
Hallo Franz,
i want to rotate a picturebox to any angle.
I searched and found Rotate, but this ony works in specified angles.wir sprechen hier immer noch deutsch. Bitte zukünftig beachten.
Zur Frage selbst siehe: http://dotnet-snippets.com/dns/image-rotation-by-angle-SID600.aspx
(übrigens ein Link auf der ersten Ergebnisseite bei einer Suche nach System.Drawing.Image rotate)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Trixi-N Montag, 3. Januar 2011 15:46
- Tag als Antwort aufgehoben Robert BreitenhoferModerator Dienstag, 4. Januar 2011 07:47
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 4. Januar 2011 07:47
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
-
Hallo Franz,
ein Beispiel, bei dem sich was via Timer dreht, hatte ich mal gegeben in: Zentirert Routieren
Gedreht wird dort immer das Original, denn sonst wird es auf Dauer unschön.
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 4. Januar 2011 07:46
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
-
Hallo Franz,
so ganz werde ich aus dir nicht schlau. Die gleiche Frage hast du doch bereits im US/UK Forum gestellt. Dort habe ich dir folgenden Code gepostet:
Imports System.Drawing.Drawing2D Imports System.Math Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bm_in As New Bitmap(My.Resources.Bild) '// Array von Punkten, die die Bild Ecken definieren Dim wid As Single = bm_in.Width Dim hgt As Single = bm_in.Height Dim corners As Point() = { _ New Point(0, 0), _ New Point(wid, 0), _ New Point(0, hgt), _ New Point(wid, hgt)} '//Translation Dim cx As Single = wid / 2 Dim cy As Single = hgt / 2 Dim i As Long For i = 0 To 3 corners(i).X -= cx corners(i).Y -= cy Next i '//Drehen Dim theta As Single = Single.Parse(TextBox1.Text) * PI / 180.0 '//Beliebigen Winkel eingeben Dim sin_theta As Single = Sin(theta) Dim cos_theta As Single = Cos(theta) Dim X As Single Dim Y As Single For i = 0 To 3 X = corners(i).X Y = corners(i).Y corners(i).X = X * cos_theta + Y * sin_theta corners(i).Y = -X * sin_theta + Y * cos_theta Next i '//Translate, so das X >= 0 und Y >=0 für alle Ecken Dim xmin As Single = corners(0).X Dim ymin As Single = corners(0).Y For i = 1 To 3 If xmin > corners(i).X Then xmin = corners(i).X If ymin > corners(i).Y Then ymin = corners(i).Y Next i For i = 0 To 3 corners(i).X -= xmin corners(i).Y -= ymin Next i '//Output Bitmap als Graphisches Objekt Dim bm_out As New Bitmap(CInt(-2 * xmin), CInt(-2 * ymin)) Dim gr_out As Graphics = Graphics.FromImage(bm_out) ReDim Preserve corners(2) '//Resultat in das Output Bitmap speichern gr_out.DrawImage(bm_in, corners) '//Endresultat PictureBox1.Image = bm_out End Sub
Ich bin mir nicht sicher, ob ich diesen Code seinezeit von Elmar oder Robert bekommen habe (denke von Elmar), der funktioniert doch super.
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Januar 2011 13:17
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
-
Hi,
see:
http://cid-d5e5bd21dbf5e4e9.office.live.com/self.aspx/ng^_demo/Einfache^_Verfahren/BilderDrehen.zip
Grüsse,
Thorsten
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Januar 2011 13:27
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
Alle Antworten
-
Hallo Franz,
i want to rotate a picturebox to any angle.
I searched and found Rotate, but this ony works in specified angles.wir sprechen hier immer noch deutsch. Bitte zukünftig beachten.
Zur Frage selbst siehe: http://dotnet-snippets.com/dns/image-rotation-by-angle-SID600.aspx
(übrigens ein Link auf der ersten Ergebnisseite bei einer Suche nach System.Drawing.Image rotate)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Trixi-N Montag, 3. Januar 2011 15:46
- Tag als Antwort aufgehoben Robert BreitenhoferModerator Dienstag, 4. Januar 2011 07:47
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 4. Januar 2011 07:47
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
-
Hoi Stefan,
Yo, war im US-Forum aber habe dann gesehen, dass die Frage in DE gepostet wurde ?
Der Suchbegriff war mir nicht bekannt, ich hatte nur nach Image rorate gesucht ;-)
Dein Ergbnis ist in C#, ich suche bei VB.net (was ich brauche).
Evtl. ein Cookie-Fehler nach dem Jahreswechsel ?
Doei
Franz
Be a good forum member - mark posts that contain the answers to your questions or those that are helpful -
Hallo Trixi-N,
Schau Dir mal den folgenden Link an. Vielleicht kann er Dir weiter helfen.
How to rotate an image in Visual Basic.Net
Man braucht ein bisschen Trigonometrie J
Grüße,
Robert
-
Hallo Franz,
ein Beispiel, bei dem sich was via Timer dreht, hatte ich mal gegeben in: Zentirert Routieren
Gedreht wird dort immer das Original, denn sonst wird es auf Dauer unschön.
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 4. Januar 2011 07:46
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
-
Hallo Franz,
so ganz werde ich aus dir nicht schlau. Die gleiche Frage hast du doch bereits im US/UK Forum gestellt. Dort habe ich dir folgenden Code gepostet:
Imports System.Drawing.Drawing2D Imports System.Math Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bm_in As New Bitmap(My.Resources.Bild) '// Array von Punkten, die die Bild Ecken definieren Dim wid As Single = bm_in.Width Dim hgt As Single = bm_in.Height Dim corners As Point() = { _ New Point(0, 0), _ New Point(wid, 0), _ New Point(0, hgt), _ New Point(wid, hgt)} '//Translation Dim cx As Single = wid / 2 Dim cy As Single = hgt / 2 Dim i As Long For i = 0 To 3 corners(i).X -= cx corners(i).Y -= cy Next i '//Drehen Dim theta As Single = Single.Parse(TextBox1.Text) * PI / 180.0 '//Beliebigen Winkel eingeben Dim sin_theta As Single = Sin(theta) Dim cos_theta As Single = Cos(theta) Dim X As Single Dim Y As Single For i = 0 To 3 X = corners(i).X Y = corners(i).Y corners(i).X = X * cos_theta + Y * sin_theta corners(i).Y = -X * sin_theta + Y * cos_theta Next i '//Translate, so das X >= 0 und Y >=0 für alle Ecken Dim xmin As Single = corners(0).X Dim ymin As Single = corners(0).Y For i = 1 To 3 If xmin > corners(i).X Then xmin = corners(i).X If ymin > corners(i).Y Then ymin = corners(i).Y Next i For i = 0 To 3 corners(i).X -= xmin corners(i).Y -= ymin Next i '//Output Bitmap als Graphisches Objekt Dim bm_out As New Bitmap(CInt(-2 * xmin), CInt(-2 * ymin)) Dim gr_out As Graphics = Graphics.FromImage(bm_out) ReDim Preserve corners(2) '//Resultat in das Output Bitmap speichern gr_out.DrawImage(bm_in, corners) '//Endresultat PictureBox1.Image = bm_out End Sub
Ich bin mir nicht sicher, ob ich diesen Code seinezeit von Elmar oder Robert bekommen habe (denke von Elmar), der funktioniert doch super.
Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Januar 2011 13:17
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
-
Hi,
see:
http://cid-d5e5bd21dbf5e4e9.office.live.com/self.aspx/ng^_demo/Einfache^_Verfahren/BilderDrehen.zip
Grüsse,
Thorsten
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Januar 2011 13:27
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:34
-
Hallo Stefan,
Von mir hast Du vielleicht den Code jetzt, aus diesem Thread bekommen, weil ich ihn in meinem vorigen Beitrag gepostet habe J
Wie Du aus Thorstens Gudera Beitrag sehen kannst gibt es zwei Art Drehungen: Eine Art wo man die Bildgrösse beinhaltet beim drehen und andere wo sich die Bildgrösse am Winkel anpasst. Unsere Beispiele (Beispiel) die wir gepostet haben, passen das Bild an dem Winkel an, deshalb die Trigonometrie dort. Der Beitrag von Stefan Falz zeigt uns das Beispiel wo die Bildgrösse sich nicht verändert, deshalb die abgeschnittenen „corners“.
Grüße,
Robert
-
Hallo zusammen,
Diskussion in Zusammenhang auf den MSDN EN-US Foren:
Rotate Pictuerbox to any angle
Grüße,
Robert